Вопрос по c#, stream, isolatedstorage, windows-phone-7, bitmapimage – Сохранение PNG-изображения в изолированном хранилище для WP7

2

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

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

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

Ваш Ответ

1   ответ
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 Selbekk
@ Крис -ToImage метод расширения, предоставляемый пакетом инструментов изображения FWIW, я запустил это на своем Титане перед отправкой.
@ Крис - Это была интересная проблема и для меня, я не осознавал, насколько плоха поддержка png в WP7. Дайте мне знать, если у вас есть какие-либо другие вопросы, мне было бы любопытно рассмотреть их.
К сожалению, это не работает на WP7, так какWriteableBitmapкласс не включает в себяToImage()-метод. Решение будет с благодарностью. Kris Selbekk

Похожие вопросы