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

пятница, 25 марта 2011, Иван Белко

В этой статье мы рассмотрим как сохранить, загрузить и удалить картинку с 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" />

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

alt text

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

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 после первой загрузки приложения или очистим перед єтим хранилище, то программа нам выдаст ошибку.

alt text

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

private void ClearClick(object sender, RoutedEventArgs e)
{
     using (var iStorage = IsolatedStorageFile.GetUserStoreForApplication()
     {
         try
         {
              if (iStorage.FileExists(imageName))
              {
                   iStorage.DeleteFile(imageName);
              }
         }
         catch (Exception)
         {
         }            
     }
}

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

alt text

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


Ищите нас в интернетах!

Комментарии

Свежие вакансии