我基本上是尝试使用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字节......
任何想法我做错了什么?
答案 0 :(得分:0)
我很确定问题出在我正在使用的ImageTools库中。不确定如何100%确认这一点,但似乎如果ImageTools编码我尝试设置为BitmapImage的源的错误图像字节,BitmapImage将抛出OutOfMemoryException。
所以我称之为ImageTools库中的一个错误,因为它无法将完美的Gif图像编码为PNG格式,而在BitmapImage中也会因为在这种情况下抛出错误的异常。