Вопрос по c#, stream, isolatedstorage, windows-phone-7, bitmapimage – Сохранение PNG-изображения в изолированном хранилище для WP7
Здесь было довольно много вопросов об изображении-в-хранилище, но я не смог найти хорошего ответа для моей ситуации - так что поехали.
Я достаю.png
изображение из Интернета и сохранение его в видеBitmapImage
-объект. Когда загрузка будет завершена (наBitmapImage.ImageOpened
событие), я хочу сохранить его в изолированном хранилище.
Итак, как я могу получить байты или поток файлов из этого BitmapImage (или напрямую из Интернета - не имеет значения), чтобы я мог записать его в свойIsolatedStorageFileStream
? Я не могу найти ни одного поста об этом в Интернете, который работает на WP7 (такBitmapImage.StreamSource
недоступно) с изображениями .png. Любая помощь будет принята с благодарностью.
Я не думаю, что вы можете сделать это "из коробки", но есть проект codeplex / nuget, который позволит вам сохранять в формате png.
Если у вас естьинструменты изображения Из кодекса установлено (через nuget!).
_bi = new BitmapImage(new Uri("http://blog.webnames.ca/images/Godzilla.png", UriKind.Absolute));
_bi.ImageOpened += ImageOpened;
...
private void ImageOpened(object sender, RoutedEventArgs e)
{
var isf = IsolatedStorageFile.GetUserStoreForApplication();
using (var writer = new StreamWriter(new IsolatedStorageFileStream("godzilla.png", FileMode.Create, FileAccess.Write, isf)))
{
var encoder = new PngEncoder();
var wb = new WriteableBitmap(_bi);
encoder.Encode(wb.ToImage(), writer.BaseStream);
}
}
Джон Паппа имеет отличную запись в блоге по этой технике.Сохранение снимков в PNG
ToImage
метод расширения, предоставляемый пакетом инструментов изображения FWIW, я запустил это на своем Титане перед отправкой.
WriteableBitmap
класс не включает в себяToImage()
-метод. Решение будет с благодарностью.