Slack用に回転するアニメーション絵文字を作れるようにしてみた
きっかけ
某Slackで回転する :thinking_face:
を作っている人がいたので、汎用的に作れるようにしたかった。
↑回転する:thinking_face:
スクリプト
ImageMagickを使ってすぐに生成できるようにしてみた。
#!/bin/bash WORKDIR=`mktemp -d "tmp-image.XXXXXX"` input=$1 output=$2 convert ${input} -background white -alpha deactivate -flatten ${WORKDIR}/input.png for i in `seq -f %02g 0 23`; do deg=`expr $i \* 15` convert -rotate ${deg} ${WORKDIR}/input.png ${WORKDIR}/img-${i}.png done convert -layers Optimize -loop 0 -delay 4 ${WORKDIR}/img-*.png ${output} rm -rf ${WORKDIR}
透過情報を消してから回転するようにしている。透過情報を消さずに回転すると、前のフレームが残ってしまう模様。
使い方
一つ目の引数に入力ファイル(png)、二つ目の引数に出力ファイル(gif)を指定する。二つ目の引数を .gif
にしていないと生成失敗するので注意。
bash emoji_rotate.sh input.png output.gif
↑透過情報を消さずにアニメーション生成するとこんな感じ。
スクリプトの流れとしては、15度ずつ回転させた画像を24枚生成して、それを40msごとに変化させるアニメーションGIFを書き出すようにした。