前回はMagickNetでアニメーションGIFを作りました。
今回は、作ったアニメーションGIFをフレームごとに分解して一つ一つのgifファイルとして保存します。
MagickNetだと、かなり簡単にできるようになっていますので、いきなりサンプルコードを載せます。
普段のMagickImageではなくMagickImageCollectionとしてファイルを読み込ませるだけです。
それだけで各フレームがMagickImageのインスタンスとしてコレクションされているので、1つずつファイルに保存するだけです。
private static void GIFアニメーションからフレームごとにファイルを分割するよ()
{
var path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "animation.gif");
//アニメーションGIFをMagickImageCollectionとして読み込む
using (var imageCollection = new MagickImageCollection(path))
{
var frameNo = 1;
foreach (var image in imageCollection)
{
//コレクション中の要素を保存する
var outputPath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), string.Format("frame{0}.gif",frameNo++));
image.Write(outputPath);
}
}
}
すると結果として以下のように各フレームが単体のGIFファイルとして出力されます。
このように、簡単に分解することが可能です。
一部だけ載せます。(frame1から4)



