我找到的所有代码都给我相同的结果:一堆看起来完全相同的帧。这意味着:它会给我一个第一帧的列表,重复X次。我使用的.gif有30个帧,所以我得到了30次第一帧,而不是30个不同的帧。
我错过了什么?我查看的所有代码都会重复X次第一帧。
这是应该显示的样子(使用网页)。看到每个帧是不同的吗? 这是我在将每个帧保存到文件夹位置的数组中之后看到的样子(一堆相同的帧):
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次第一帧。
这是应该显示的样子(使用网页)。看到每个帧是不同的吗? 这是我在将每个帧保存到文件夹位置的数组中之后看到的样子(一堆相同的帧):
附言:是的,我使用的图片是 .gif 格式。
更新:问题似乎出现在我使用 OpenFileDialog 读取文件时,如果我通过代码传递我的 .gif 文件,则可以正常工作。那么如何在 OpenFileDialog 中读取动画 gif?谢谢。
GifBitmapEncoder
吗? - dbcMG.SelectActiveFrame(FrameDimension.Time, 30);
)。你应该以某种方式保存“当前帧”(我不知道如何做到这一点——只是你的代码看起来不完整)。 - Alexei LevenkovIMGs.Add(IMG)
更改为IMGs.Add(new Bitmap(IMG))
。 - soulblazer