Slack用に回転するアニメーション絵文字を作れるようにしてみた

きっかけ

某Slackで回転する :thinking_face: を作っている人がいたので、汎用的に作れるようにしたかった。

f:id:kuro_m88:20170520175648g:plain

↑回転する: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

f:id:kuro_m88:20170520180008g:plain

↑透過情報を消さずにアニメーション生成するとこんな感じ。

スクリプトの流れとしては、15度ずつ回転させた画像を24枚生成して、それを40msごとに変化させるアニメーションGIFを書き出すようにした。