MagickNetでアニメーションGIFを分解してみよう

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

frame1
frame2
frame3
frame4

Share