ImageMagickで画像を分割してgifアニメを作る

brew install imagemagick
FRAME_COUNT=59
for (( i = 0; i < ${FRAME_COUNT}; i++ )); do
  Y=$(expr ${i} \* 40)
  convert -crop 40x40+0+${Y} +repage bow_anim@2x.png bow_frame_${i}.png
done

convert -delay 0 -loop 0 -dispose previous bow_frame_*.png bow.gif

convert -crop 40x40だけだと、切り出した時のフレーム情報みたいなのが保持されて、gifアニメにConvertした時にフレームが上から順に表示されるだけのanimationになる。

convert -crop 40x40+0+${Y} +repageで、場所を指定して切り抜き&フレーム情報初期化みたいな感じになるので、gifアニメにした時ちゃんと映る。

透過画像を使わない場合は-dispose previousは指定しなくてもいいかもしれない。

切り抜きと同時に画像をリサイズしたいときは-resize-unsharp指定する。-resizeは、リサイズ後のサイズを指定して、-unsharpはアンシャープマスクつけてリサイズ後の画像をいい感じにする。

-unsharp ${radius}x${sigma}+${amount}+${thresold}みたいに指定する。各値の意味とか最適な値とかはよくわからない。

Skypeのbow_anim.pngを上記の方法でgifアニメにしたんだけど、Skype.appみたいにいい感じにならなくて残念だった。

参考