Parrot一部界隈ではお馴染みParrotのアニメーションGIFが大量に公開されているサイトがある。https://cultofthepartyparrot.com:parrot:ご丁寧にSlackのカスタムemojiに突っ込むためのzipまで用意していて、これまで数多くのSlackワークスペースがparrotsによって汚染侵略されてきた。GIF欲しいな」と思ってしまった。「せっかくだしシェル芸で作ってみたいな」とも思ってしまった。修論タスクが完了したので作ることにした。おことわり本エントリではImagemagickとAWKを使います。あと純粋なシェル芸の定義からは逸れます(画像分割と結合のために複数回コマンド打つので)。parrot_9.gifの各コマに分割される。:phantomparrot::phantomparrot:最初にこんなのができてしまった。これはEXILEというより残像だ。いうわけで命名「:phantomparrot:」このGIFの生成過程を解説する。分解したparrotたちを重ねて1枚の画像にしなければいけない。parrot_9.gifを重ね合わせるコマンドを考える。output.gif上記は3枚のparrot静止画を重ねてoutput.gifにするコマンドだ。これを10枚分連ねるのは面倒だし、しかもそれぞれの画像が一番上の合成画像をいちいち用意するのも面倒くさい。画像...のように先頭からの順番が1つずつずれたGIF生成コマンドすべてをシェル芸1発で叩き出す。参考にしたのは以下の記事。Qiitaまずは数字だけを1つずらしで表示する。10列目まで出力の流れになっている。あとはこれにparrot_N.gifのようにファイル名をつけ、さらに各行がparrots_N.gif(複数形)の画像を出力するようにコマンドを整えれば良い。これはawkでゴリ押す。parrots_9.gif最後にこれらのコマンドをパイプでshに食わせ、parrots_N.gifを10枚生成する。sh実行すると、以下のように先頭が1コマずつずれたparrotたちの画像が出来上がる。0)アニメーションgifに仕上げる。phantomparrot.gif:phantomparrot:まとめると以下のようなシェルスクリプトになる。:marchingparrot:さっきのはどうもEXILEっぽくない。次に1コマに登場するparrotの量を減らすことを考える。これで出来上がるGIFが以下である。:exileparrot:直前のコマが連続しているせいで残像感が出ているため、次は適度にコマを間引きする。1の数列切り取りを改変して、1,3,5,7,9列目だけを抽出するようにする。あとは同じようにawkでコマンドを作ってshでコマンド実行する。コメントをキャンセルメールアドレスが公開されることはありません。WordPress%d人のブロガーが「いいね」をつけました。