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");
なぜこれが機能し、元のコードが機能しないのか、誰かが私に説明してもらえますか?
どうもありがとうございました!