我使用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,程序加载正常。请注意以下情况:
问题出在哪里?如何在没有异常的情况下加载如此大的动画GIF?
答案 0 :(得分:4)
或者您可以在发布模式下运行它...不应该被OutOfMemoryException打扰...
我建议您稍微调整GIF的大小,因为200fps的1280x768位图代表了大量的内存......
让我们看看... 1帧代表983040像素...(1280 x 768),每个像素由3种颜色的数据组成,因此3个字节等于:3 * 983040 = 2949120字节仅一帧... 你有200个......所以:589824000 Bytes。 这相当于576000 kBytes或562.7 MBytes ......
那太可怕了......