ぽかぽかウンティの自由帳

ぽかぽか動物園から投稿します。

GIFアニメーションファイルにLGTMフレームを追加するツールを作成した

supercaracal/lgtm-gif-animation

自分がターミナルで使うことを第一に考えて標準入力で受け付けて標準出力する形にした。だからファイルにリダイレクトしないと大変なことになる。

そしてデフォルトで標準エラー出力に画像ファイルのプロパティ情報を出力するお行儀の悪いつくりになっている。嫌だったら /dev/null にリダイレクトすれば良い。

YouTubeでニコ動から転載されたと思われるブロリーMADに最近ハマってて、ブロリーで画像検索したらGIFアニメーション画像がたくさんでてきた。

それらに無理矢理LGTMを捩じ込んで日々のプルリクレビューのコメントで使いたいなと思った。

もちろんLGTMジェネレーターなんて凄い人たちがもうたくさんつくってて、それを使えば良かったのだがせっかくなので自作にチャレンジした。

まずはGIFアニメーションファイルの仕様から調べることになった。それには以下のサイトが役にたった。

LGTMを追加するのでPlain Text Extensionが使えそうだなと思ってしばらく格闘してたが、仕様には載ってるのにビューアがまったく表示してくれなくて日が暮れた。

後日どっかの記事でan obsolete featureと書いてあって諦めた。

次にLGTM画像のデータを用意しないといけないと思ってLZWアルゴリズムを調査した。

しかしLZWアルゴリズムに関しては訳がわからなかった。まったく理解できない。

これらを読もうとしてそっ閉じした。いつか頑張る。

最後にWindowsのペイントを使って128x64のLGTM画像を作成し、それを使うことにした。

必要なのはカラーパレットとデータブロックだけなのでそれだけ抜いて unsigned char の配列でハードコーディングした。

出来栄えは正直ショボい。アニメーションの最後に2秒間だけ中央付近に背景黒の白文字で控え目のLGTMが表示されるだけだ。

時間があったらもっと工夫したいと思う。

とりあえず苦手で訳がわからなかったビット演算には少し慣れた気がする。