2012-04-03 13 views
0

私は基本的にWP7のImageToolsライブラリを使用してGIF画像をPNG画像に変換しようとしています。WP7でBitmapImageのSetSourceを呼び出すときにOutOfMemoryExceptionが発生する

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

私はそれを前もって知りません。私は基本的に、私が知っているバイトセットはGIFイメージです。好奇心のために、この文脈でこの情報が必要なのはどこですか? ExtendedImage(つまりGIF)を作成するには、そのことを知る必要がありますか? –

+0

ああ - 私が今持っているこの特定のケースでは、画像は600px×205pxです。 –

答えて

0

問題は私が使用しているImageToolsライブラリにあると確信しています。これを100%確認する方法がわかりませんが、ImageToolsがBitmapImageのソースとして設定しようとするイメージのバイトをエンコードすると、BitmapImageはOutOfMemoryExceptionをスローします。

これは、両方のImageToolsライブラリで、完全に良いGIF画像をPNG形式にエンコードできないというバグですが、この場合は間違った例外をスローするためのBitmapImageでもあります。

関連する問題