如何在框架中拆分 .gif?

How to split a .gif in frames?

我找到的所有代码都给我相同的结果:一堆外观完全相同的框架。意思是:它给了我第一帧的列表,重复了 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 次。

这是应该看起来的样子(使用网页)。看看每一帧有何不同?

这是我在将该数组中的每个帧保存到一个文件夹位置(一堆相​​同的帧)后寻找的内容:

P.S.: 是的,我使用的是 .gif 图片。

更新:问题似乎出在我在 OpenFileDialog 中读取文件时,因为如果我通过代码传递我的 .gif 它会起作用。那么如何在 OpenFileDialong 中读取动画 gif?谢谢。

   IMGs.Add(IMG);

这就是问题所在,您一遍又一遍地添加相同的 IMG 对象。您需要对框架进行深度复制。这很容易做到:

   IMGs.Add(new Bitmap(IMG));