Сохранение картинок в Isolated Storage

В этой статье мы раcсмотрим как сохранить, загрузить и удалить картинку с Isolated Storage. Картинка у нас будет задана ссылкой из интернета.

<Image Name="myImage" Width="460" Height="250" Source="http://autoworld.ucoz.ru/_fr/0/8777267.jpg"/>

На этой страничке еще есть Image для картинки которую мы будем загружать из IS.

<Image Name="copyImage" Width="460" Height="250" />

После загрузки приложения оно выглядит вот так:

1

Для сохранения картинки используем следующий метод:

private void SaveClick(object sender, RoutedEventArgs e)
{
     var imageUrl = ((System.Windows.Media.Imaging.BitmapImage)(myImage.Source)).UriSource.AbsoluteUri;

     var uri = new Uri(imageUrl, UriKind.Absolute);      var wc = new WebClient();

     wc.OpenReadAsync(uri);

     wc.OpenReadCompleted += (o, args) =>


     {
         var sourceImage = new BitmapImage();

         sourceImage.SetSource(args.Result);

         using (var isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())

         {

              using (var isfileStream = new IsolatedStorageFileStream(imageName, FileMode.Create, isolatedStorage))

              {
                  var bitmap = new WriteableBitmap(sourceImage);


                  bitmap.SaveJpeg(isfileStream, sourceImage.PixelWidth, sourceImage.PixelHeight, 0, 100);

              }

          }

      };
}

Переменной imageName присваиваем любую строку.

Для загрузки приложения используем:

private void LoadClick(object sender, RoutedEventArgs e)

{

    var bmp = new BitmapImage();


    using (var iStorage = IsolatedStorageFile.GetUserStoreForApplication())

    {

        if (iStorage.FileExists(imageName))

        {

        using (var fStream = iStorage.OpenFile(imageName, FileMode.Open))

            {

                bmp.SetSource(fStream);

                copyImage.Source = bmp;

            }

        }

        else

        {

            MessageBox.Show("Save please!");

        }

    }

}

В методе есть проверка на наличие данных в хранилище, то есть если мы нажмем Load после первой загрузки приложения или очистим перед єтим хранилище, то программа нам выдаст ошибку.

2

Для очищения хранилища также нужно проверить наличие в нем данных.


private void ClearClick(object sender, RoutedEventArgs e)
  {
            using (var iStorage = IsolatedStorageFile.GetUserStoreForApplication()  
            {  
                try

                {

                    if (iStorage.FileExists(imageName))

                    {

                        iStorage.DeleteFile(imageName);

                    }

                }

                catch (Exception)

                {


                }            }

        }

Теперь нажимаем кнопку Save, и после нее Load и вот результат нашей работы:

3

Скачать пример

Оставьте комментарий