为什么.gif图像只显示一些第一帧(Windows Phone)

时间:2012-03-12 17:15:32

标签: c# silverlight windows-phone-7 silverlight-4.0

我之前的源代码问题是:How to use gif animated image in WP 7

我正在使用http://imagetools.codeplex.com/ 在我的动画gif我有24帧,但它只解码了一些第一帧,所以我一次又一次地看到一些(可能是两个)帧的重复动画

1 个答案:

答案 0 :(得分:1)

对于某些gif文件,这个解码器可以用于其他一些 - 不用。

我下载了该项目的源代码,发现代码无法正常工作。它位于ImageTools.IO.Gif\GifDecoder.cs文件中,Decode方法:

int nextFlag = stream.ReadByte();
while (nextFlag != 0)
{
    //...
}

this gif在中间包含0字节,因此解码器停在不应该的位置。解决方案是将此标志更改为-1,以便我们确保将gif图像读取到最后:

int nextFlag = stream.ReadByte();
while (nextFlag != -1)
{
}

因此,您需要重新编译此库或以源代码的形式包含ImageTools.IO.Gif项目,而不是以dll的形式。

您可以在此处下载示例项目:http://dl.dropbox.com/u/8047386/StackOverflow/TestGif.zip

但我不确定是否可以依赖此修复程序。无论如何,我在codeplex打开了这个问题。