我正在尝试在我的 c# 程序中提取动画 gif 的各个帧。
它为每一帧创建一个 png - 效果很好,但它们只是第一帧的一堆副本。我做错了什么?
Image img = Image.FromFile(path);
FrameDimension dimension = new FrameDimension(img.FrameDimensionsList[0]);
int frameCount = img.GetFrameCount(dimension);
MemoryStream memory = new MemoryStream();
for(int i = 0; i < frameCount; i++){
img.SelectActiveFrame(dimension, i);
((Image)img.Clone).Save(memory, System.Drawing.Imaging.ImageFormat.Png);
File.WriteAllBytes(myFolder + "/frame_"+i+".png", memory.ToArray());
}
更新:
经过一番修补后,我发现它可以工作,如果使用这个:
Bitmap bmp = new Bitmap(img);
bmp.Save(Application.dataPath + projectFolder.Substring(6) + "/frame_"+i+".png");
有人可以向我解释一下,为什么这有效而原始代码无效?
非常感谢!