#踊るgifシェル芸とは?
こういうgifアニメーションをつくるシェル芸です。
このシェル芸はいらすとやの素材を使用しています。
#素材とコマンド
以下の素材とコマンドで、gifアニメーションを作ることができます。
man.png
woman.png
コマンド
$ convert -dispose previous man.png \( woman.png -flop \) +append -write mpr:a +delete \( man.png -flop \) woman.png +append -write mpr:b +delete mpr:a mpr:a mpr:a \( mpr:b -scale x90% \) mpr:b mpr:b mpr:b \( mpr:a -scale x90% \) /images/x.gif
前提条件はimagemagick
がインストールされていること。
#コマンドができるまで
コマンドができるまでを見ていきましょう。
##ステップ1. 反転してアニメーションする
まず一人の人を反転してアニメにしてみます。
コマンド
$ convert man.png \( +clone -flop \) /images/0.gif
出力アニメ
2コマのアニメにはなりましたが、素材が透過pngなので、1コマめが残っちゃってますね。
-dispose previous
で消しましょう。
コマンド
$ convert -dispose previous man.png \( +clone -flop \) /images/1.gif
出力アニメ
消えました。
##ステップ2. 弾ませる
左右反転するときに上下に弾むようにしましょう。
-scale x90%
で縦に少し縮めたフレームを作って、反転時に挿入します。
コマンド
$ convert -dispose previous man.png \( man.png -flop -scale x90% \) \( man.png -flop \) \( man.png -scale x90% \) /images/2.gif
出力アニメ
##ステップ3. 接地時間調整
地に足がついている時間を長めにしましょう。
元画像を-write mpr:a
でmpr:aに格納、反転画像を-write mpr:b
でmpr:bに格納して、
mpr:a を3コマ続けて、mpr:b を縦に縮めたものを挟んで、
mpr:b を3コマ続けて、mpr:a を縦に縮めたものを挟んで、もとの mpr:a にもどります。
コマンド
$ convert -dispose previous man.png -write mpr:a +delete \( mpr:a -flop \) -write mpr:b +delete mpr:a mpr:a mpr:a \( mpr:b -scale x90% \) mpr:b mpr:b mpr:b \( mpr:a -scale x90% \) /images/3.gif
ステップ4. 2人にする
+append
で横に結合したものを踊らせます。
コマンド
$ convert -dispose previous man.png \( woman.png -flop \) +append -write mpr:a +delete \( man.png -flop \) woman.png +append -write mpr:b +delete mpr:a mpr:a mpr:a \( mpr:b -scale x90% \) mpr:b mpr:b mpr:b \( mpr:a -scale x90% \) /images/x.gif
出力アニメ
完成です。
#シェル芸botの場合
シェル芸botでは、入力ツイートでアップロードした画像が /media/0, /media/1,… のパスにあるものとして
扱われるので、以下のようになります。
入力ツイート
出力ツイートconvert -dispose previous media/0 \( media/1 -flop \) +append -write mpr:a +delete \( media/0 -flop \) media/1 +append -write mpr:b +delete mpr:a mpr:a mpr:a \( mpr:b -scale x90% \) mpr:b mpr:b mpr:b \( mpr:a -scale x90% \) /images/x.gif#シェル芸 pic.twitter.com/HzidVj8EKT
— 闇ときどき豚 (@yami_buta) October 10, 2019
#応用 反転時に上に弾むのではなく、下に沈むのでも踊らせることができます。 コマンドhttps://t.co/zibqPiZNBc pic.twitter.com/N0cnUlTsar
— シェル芸bot (@minyoruminyon) October 10, 2019
$ echo -e "\n💃 "|textimg -F100|convert -dispose previous - -trim +repage -scale 72x100! -write mpr:a -flop -write mpr:b +delete -size 72x10 xc:black \( mpr:b -scale x90% \) -append -write mpr:c +delete mpr:a mpr:a mpr:a mpr:c mpr:b mpr:b mpr:b \( mpr:c -flop \) /images/d.gif
阿波踊り(右向きと左向きで2回ずつ弾ませている)https://t.co/Z2oqANL1mr pic.twitter.com/NglidA3fLB
— シェル芸bot (@minyoruminyon) September 11, 2019
応用というか引き算ですが、上下に弾ませなくてもけっこう面白いものはできます。https://t.co/rc1DcyDLQY pic.twitter.com/dFpkvaqIvE
— シェル芸bot (@minyoruminyon) July 7, 2019
https://t.co/O9MV7z7tIC pic.twitter.com/2gTYI7Zv5v
— シェル芸bot (@minyoruminyon) July 7, 2019
https://t.co/M66SNVF6H2 pic.twitter.com/ZBeoiwokpb
— シェル芸bot (@minyoruminyon) July 14, 2019
#まとめ 画像を左右反転して、上下に弾ませることで、踊るgifを作ることができました。 #所感 ~~阿波踊りのやつもシェル芸botでやったと思うんですが、ちょっと見つかりませんでした。~~ ~~見つけたら追記します。~~→しました!https://t.co/mLQk7Wok6N pic.twitter.com/xeJMpsZW7P
— シェル芸bot (@minyoruminyon) July 2, 2019
ソフトウェアツールとしてはimagemagick一発実行してるだけなので、
シェル芸としては微妙かもしれないですね。
imagemagickの各種コマンドラインツールを
パイプやリダイレクトでつなぐのをそのうちやろうかな。
#更新履歴
2019/12/17 7:05 踊る長い猫を追加しました。
2019/12/17 7:17 阿波踊りを追加しました。