如何在框架中拆分.gif?

时间:2015-10-11 06:04:53

标签: c# image frame gif

我找到的所有代码都给了我相同的结果:一堆精确的框架。含义:它给出了第一帧的列表,重复X次。我使用的.gif有30帧,所以我得到第一帧的30倍,而不是30帧。

    public static Image[] GetFramesFromAnimatedGIF(Image IMG)
    {
        List<Image> IMGs = new List<Image>();
        int Length = IMG.GetFrameCount(FrameDimension.Time);

        for (int i = 0; i < Length; i++)
        {
            IMG.SelectActiveFrame(FrameDimension.Time, i);
            IMGs.Add(IMG);
        }

        return IMGs.ToArray();
    }

我错过了什么?我看过的所有代码都给第一帧重复了X次。

这是应该看的(使用网页)。看看每个框架是如何不同的?

enter image description here

这是在将该数组内的每个帧保存在文件夹位置(一堆相​​等的帧)后它找我的地方:

enter image description here

P.S。:是的,这是我正在使用的.gif图像。

更新:问题似乎是当我在OpenFileDialog中读取文件时,因为如果我通过代码传递我的.gif文件就可以了。那么如何在OpenFileDialong中阅读动画gif?谢谢。

1 个答案:

答案 0 :(得分:7)

   IMGs.Add(IMG);

这就是错误,你一遍又一遍地添加相同的IMG对象。您需要制作框架的深层副本。这很容易做到:

   IMGs.Add(new Bitmap(IMG));