【发布时间】:2013-08-04 17:45:54
【问题描述】:
我使用 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,则程序加载正常。请注意以下情况:
- 1280x768 200 帧:例外
- 550x400 200 帧:加载正常
- 1280x768 50 帧:加载正常
问题出在哪里?这么大的动图怎么加载无异常?
【问题讨论】:
-
我希望这篇 SO 帖子可以帮助到你。 stackoverflow.com/questions/210922/…
-
最好假设异常是准确的。对于 32 位进程而言,消耗 786 MB 内存肯定处于危险区域的深处。您需要一个 64 位进程才能取得成功。将 EXE 项目的平台目标设置更改为 AnyCPU。需要 64 位版本的 Windows。
-
我已经有一个 64 位系统(intel core i7, 6GB of RAM):|