Сохранение картинок в Isolated Storage
В этой статье мы рассмотрим как сохранить, загрузить и удалить картинку с 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" />
После загрузки приложения оно выглядит вот так:
Для сохранения картинки используем следующий метод:
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 после первой загрузки приложения или очистим перед єтим хранилище, то программа нам выдаст ошибку.
Для очищения хранилища также нужно проверить наличие в нем данных.
private void ClearClick(object sender, RoutedEventArgs e) { using (var iStorage = IsolatedStorageFile.GetUserStoreForApplication() { try { if (iStorage.FileExists(imageName)) { iStorage.DeleteFile(imageName); } } catch (Exception) { } } }
Теперь нажимаем кнопку Save, и после нее Load и вот результат нашей работы: