2012-04-03 57 views
0

我基本上試圖使用WP7中的ImageTools庫將GIF圖像轉換爲PNG圖像。OutOfMemoryException在WP7中爲BitmapImage調用SetSource時

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

也許還有別的東西我不在這裏grock,因爲調試器還顯示gifImage是0x0我調用gifImage.SetSource(new MemoryStream(gifBytes))後。爲什麼它的價值,我已檢查,gifBytes[]包含有效的GIF字節...

任何想法我做錯了什麼?

+0

您正在使用的圖像的尺寸是多少? – 2012-04-03 13:35:16

+0

我不會提前知道。我基本上擁有一套我知道是GIF圖像的字節。出於好奇,在這種情況下需要哪些信息?我是否需要知道爲了創建ExtendedImage(即GIF)? – 2012-04-03 13:37:20

+0

哦 - 但對於我現在有這種特殊情況,圖像是600px×205px。 – 2012-04-03 13:38:32

回答

0

我很確定這個問題與我正在使用的ImageTools庫有關。不知道如何100%確認這一點,但似乎如果ImageTools編碼錯誤的圖像字節,我試圖設置爲BitmapImage的源,BitmapImage將拋出一個OutOfMemoryException。

因此,我將這兩個ImageTools庫中的一個錯誤稱爲無法將完美的Gif圖像編碼爲PNG格式,而且在BitmapImage中也會引發錯誤的異常。

相關問題