在WP7中为BitmapImage调用SetSource时出现OutOfMemoryException

时间:2012-04-03 13:32:06

标签: c# windows-phone-7

我基本上是尝试使用WP7中的ImageTools库将GIF图像转换为PNG图像。

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.SetSource(new MemoryStream(gifBytes))后也显示gifImage是0x0。为了它的价值,我检查了gifBytes[]包含有效的GIF字节......

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:0)

我很确定问题出在我正在使用的ImageTools库中。不确定如何100%确认这一点,但似乎如果ImageTools编码我尝试设置为BitmapImage的源的错误图像字节,BitmapImage将抛出OutOfMemoryException。

所以我称之为ImageTools库中的一个错误,因为它无法将完美的Gif图像编码为PNG格式,而在BitmapImage中也会因为在这种情况下抛出错误的异常。