我找到的所有代码都给我相同的结果:一堆外观精确的框架。意思是:它给了我第一帧的列表,重复了 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));
关于c# - 如何在框架中拆分 .gif?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33062087/