OutOfMemoryException при вызове SetSource для BitmapImage в WP7 - PullRequest
0 голосов
/ 03 апреля 2012

Я в основном пытаюсь преобразовать изображение GIF в изображение PNG, используя библиотеку ImageTools в WP7.

byte[] gifBytes = // GIF image bytes from the web

ImageTools.IO.Decoders.AddDecoder<GifDecoder>();
ImageTools.IO.Encoders.AddEncoder<PngEncoder>();
ImageTools.IO.Png.PngEncoder enc = new PngEncoder();

ExtendedImage gifImage = new ExtendedImage();
gifImage.SetSource(new MemoryStream(gifBytes));                

MemoryStream pngBytes = new MemoryStream();
enc.Encode(gifImage, pngBytes);

BitmapImage pngImage = new BitmapImage(); 
pngImage.SetSource(pngBytes);

Как только я позвоню pngImage.SetSource(pngBytes), я получу OutOfMemoryException.

Может быть, есть еще кое-что, что я здесь не замечаю, поскольку отладчик также показывает, что gifImage равен 0x0 после того, как я позвонил gifImage.SetSource(new MemoryStream(gifBytes)). Для чего он стоит, я проверил, что gifBytes[] содержит действительные байты GIF ...

Есть идеи, что я делаю не так?

1 Ответ

0 голосов
/ 12 апреля 2012

Я почти уверен, что проблема связана с библиотекой ImageTools, которую я использую. Не знаю, как на 100% подтвердить это, но, похоже, если ImageTools кодирует ошибочные байты изображения, которые я пытаюсь установить в качестве источника для BitmapImage, BitmapImage сгенерирует исключение OutOfMemoryException.

Так что я бы назвал это ошибкой как в библиотеке ImageTools, так как она не в состоянии кодировать совершенно хорошее изображение Gif в формат PNG, так и в BitmapImage, которая выдает неправильное исключение в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...