Adobe Flash CS3 を使用して簡単なアニメーション GIF を作成しました。GIF には 200 フレーム (1280x786) が含まれています。C# WPF アプリケーションで表示するためにロードすると、プログラムは次のコードで OutofMemoryException を取得します。
private void set_gif_Image(String path)
{
if (File.Exists(path))
{
var bitmapimage = new BitmapImage();
bitmapimage.BeginInit();
bitmapimage.UriSource = new Uri(path);
bitmapimage.EndInit();
ImageBehavior.SetAnimatedSource(img_preview, bitmapimage);//Exception Here
}
else
{
var bitmapimage = new BitmapImage();
bitmapimage.BeginInit();
bitmapimage.UriSource = new Uri("C:\\testing_files\\ERROR.gif");
bitmapimage.EndInit();
ImageBehavior.SetAnimatedSource(img_preview, bitmapimage);
}
しかし、たとえば 20 フレームの GIF をロードすると、プログラムは正常にロードされます。次の状況に注意してください。
- 200 フレームで 1280x768: 例外
- 200 フレームの 550x400: 正常に読み込まれます
- 1280x768、50 フレーム: 正常にロード
問題はどこだ?このような大きなアニメーション GIF を例外なくロードするにはどうすればよいですか?