前回は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)