フレームレート(Delay)を調べる
$ identify -verbose animation.gif | grep "Delay" Delay: 20x100
ここで調べたDelay値を再合成時のdelayパラメータに指定する
(この場合は、100分の20秒毎にアニメーション、フレームレート換算すると5fps相当)
GIFファイルをフレーム単位に分割する
$ convert -coalesce animation.gif part%d.png or $ convert +adjoin -coalesce animation.gif conv/%02d.gif
- +adjoin: 画像分割するためのオプション(無くても分割できるかもしれない)
- -coalesce: フレーム差分のみの画像が出力されるのを抑制するために指定
LGTMを合成する
LGTMの透過画像を準備しておくこと$ for i in `seq -w 0 10`; do composite -gravity center -compose over lgtm_320.png conv/${i}.png tmp/${i}.png ; done
- -gravity center: 位置を指定
- -compose over image1.png image2.png : image2.pngの上にimage1.pngを重ね合せる
画像からGIFアニメを作成
$ convert -delay 10 -layers optimize tmp/*.png lgtm.gif
- -delay: 1枚の画像を100分のx秒間表示する. ffmpegコマンド実行時に指定したフレームレートから計算して指定
- -layers optimize: 最適化オプション.
おまけ: トリミングしたい
convert -crop 285x285+5+15! -resize 300 pngs/*.png tmp/%d.png基準座標から5x15pxの位置から285x285pxで画像を切り出し、300x300pxに拡大する