2017年8月20日日曜日

GIFアニメにLGTMロゴを合成する

フレームレート(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に拡大する

0 件のコメント:

コメントを投稿