Сохранение PNG-изображения в изолированном хранилище для WP7

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

Я достаю.png изображение из Интернета и сохранение его в видеBitmapImage-объект. Когда загрузка будет завершена (наBitmapImage.ImageOpened событие), я хочу сохранить его в изолированном хранилище.

Итак, как я могу получить байты или поток файлов из этого BitmapImage (или напрямую из Интернета - не имеет значения), чтобы я мог записать его в свойIsolatedStorageFileStream? Я не могу найти ни одного поста об этом в Интернете, который работает на WP7 (такBitmapImage.StreamSource недоступно) с изображениями .png. Любая помощь будет принята с благодарностью.

Ответы на вопрос(1)

Решение Вопроса

Я не думаю, что вы можете сделать это "из коробки", но есть проект 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

 Kris Selbekk29 апр. 2012 г., 15:02
хорошо спасибо. Я еще посмотрю на это :-) Спасибо!
 29 апр. 2012 г., 15:04
@ Крис - Это была интересная проблема и для меня, я не осознавал, насколько плоха поддержка png в WP7. Дайте мне знать, если у вас есть какие-либо другие вопросы, мне было бы любопытно рассмотреть их.
 29 апр. 2012 г., 14:50
@ Крис -ToImage метод расширения, предоставляемый пакетом инструментов изображения FWIW, я запустил это на своем Титане перед отправкой.
 Kris Selbekk29 апр. 2012 г., 14:16
К сожалению, это не работает на WP7, так какWriteableBitmapкласс не включает в себяToImage()-метод. Решение будет с благодарностью.

Ваш ответ на вопрос