2021年12月15日水曜日

Imagemagickでフレーム番号つきの過程GIFを作らせる

タイムラプスとまではいかないけど段階的に絵の進行がわかるアレ。
素材画像に直描きで番号入れちゃったけど左下にロゴサイン突っ込んで右下にフレーム番号/総フレーム数をつけてまるっとGIFにするスクリプト。

要るやつ

  • Imagemagick
  • Pictures/直下にサイン用のwmark-gif.png(いらなければ適当に透過の画像で代用してね)
  • Arial-Blackフォント

ロゴ合成についてはffmpegでも出来たんだけど画質がかなり下がるので全部Imagemagickです。

ディレクトリ内の画像ファイル全部を対象にするので予め使いたいやつだけを別ディレクトリに突っ込んだりした上でどうぞ。
中途半端に引数で絵の表示間隔つけれるようになってるけど正直使わんくても十分です。そろそろgetopts?で引数ちゃんと扱えるようになったほうがいいね……

#!/bin/bash
# 連番画像にサインロゴを足してフレームナンバーをつけてGIF化する

WMARK="$HOME/Pictures/wmark-gif.png"
case "x$1" in
"x" ) DELAY="120";;
* ) DELAY="$(echo $1 | sed "s/^x//")"
esac

CO="1"
for i in $(ls *.png); do
TOTAL="$(ls *.png | wc -l)"
TMP="/tmp/gifprog-$i"
echo -n "${CO}."
convert $i $WMARK -gravity southwest -composite "$TMP"
echo -n "."
mogrify \
-font "Arial-Black" \
-pointsize 24 \
-fill lightgray \
-stroke black \
-strokewidth 1 \
-gravity southeast \
-annotate 0 \
"${CO}/${TOTAL}" \
"$TMP"
echo -n "."
CO="$(($CO + 1 ))"
done
echo "combining..."
convert -layers optimize -delay $DELAY -loop 0 /tmp/gifprog-*.png "$i.gif"
rm /tmp/gifprog*.png


彰一さん黒傘だったけど境遇的にビニ傘使いそうな人だよな…
と思って変更したという

作業途中で気になった時にスクショを段階的に撮っておいてconvertでキャンバス部だけ切り出してこれにかけただけでそれっぽいのができてグッドだ。

0 件のコメント:

コメントを投稿