17
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

#踊るgifシェル芸とは?
x.gif
こういうgifアニメーションをつくるシェル芸です。
このシェル芸はいらすとやの素材を使用しています。

#素材とコマンド
以下の素材とコマンドで、gifアニメーションを作ることができます。
man.png
man.png
woman.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

出力アニメ
0.gif
2コマのアニメにはなりましたが、素材が透過pngなので、1コマめが残っちゃってますね。
-dispose previousで消しましょう。
コマンド

$ convert -dispose previous man.png \( +clone -flop \) /images/1.gif

出力アニメ
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

出力アニメ
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

出力アニメ
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

出力アニメ
x.gif
完成です。
#シェル芸botの場合
シェル芸botでは、入力ツイートでアップロードした画像が /media/0, /media/1,… のパスにあるものとして
扱われるので、以下のようになります。
入力ツイート

出力ツイート #応用 反転時に上に弾むのではなく、下に沈むのでも踊らせることができます。 コマンド
$ 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

出力アニメ
d.gif
長い猫

阿波踊り(右向きと左向きで2回ずつ弾ませている) 応用というか引き算ですが、上下に弾ませなくてもけっこう面白いものはできます。 #まとめ 画像を左右反転して、上下に弾ませることで、踊るgifを作ることができました。 #所感 ~~阿波踊りのやつもシェル芸botでやったと思うんですが、ちょっと見つかりませんでした。~~ ~~見つけたら追記します。~~→しました!

ソフトウェアツールとしてはimagemagick一発実行してるだけなので、
シェル芸としては微妙かもしれないですね。
imagemagickの各種コマンドラインツール
パイプやリダイレクトでつなぐのをそのうちやろうかな。

#更新履歴
2019/12/17 7:05 踊る長い猫を追加しました。
2019/12/17 7:17 阿波踊りを追加しました。

17
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?