画像にタイムスタンプを付けようと思います。
Linuxユーザで画像処理を行う場合の必須アイテムと言えば、ImageMagickですよね。
既にたくさんブログがあると思うのですが、ここは私の備忘録ということで、簡単に(^^ゞ
ImageMagickは標準ではインストールされていませんが、yumを使えば簡単にインストールできます。
既に私の環境にはインストールされていたの、うろ覚えですが・・・
1 |
yum install ImageMagick |
こんだけじゃないかな?
間違っていたらごめんなさいm(__)m
取りあえず、準備が整ったら、以下のコマンドを実行してください。
設定内容は以下の通り。
コマンドにするとこんな感じ
設定項目 | 項目 | 設定内容 |
入力画像 | hogehoge.jpg | |
文字サイズ | -pointsize | 48ポイント |
文字塗潰し | -fill | 白(white) |
文字外枠幅 | -strokewidth | 1 |
文字外枠色 | -stroke | 黒(black) |
文字位置 | -gravity | 右下(SouthEast) |
文字位置補正 | -annotate | XY方向にオフセット(+40+40) |
描画文字列 | 後で説明 | |
フォント | -font | arial.ttf (多分入ってる) |
出力ファイル | out.jpg |
コマンドにするとこんな感じです。
1 |
convert hogehoge.jpg -pointsize 48 -fill white -strokewidth 1 -stroke black -gravity SouthEast -annotate +40+40 "$(date +'%Y-%m-%d %H:%M' -r hogehoge.jpg)" -font arial.ttf out.jpg |
-annotateは文字の傾きを指定するのに使用している例が多くみられるのですが、今回は傾きは必要なく、オフセット位置をしていたいだけなので、+40+40としました。
画像サイズなどに応じて適宜変更が必要です。
-gravityは画像の上(北:North)/下(南:South)/右(東:East)/左(西:West)とし、それぞれの組み合わせたりして使います。
今回は右下に付けたかったので、SoutEastとしました。
その補正位置(オフセット)を-annotateで指定しています。
描画文字列については、単純に文字列を記載すれば良いのですが、今回はタイムスタンプを入れたかったので、ファイルの生成時刻を元に入れました。
dateコマンドの-rオプションでファイルを指定することで、ファイルの生成時刻を取得しています。
画像情報から時刻を取得する場合はこんな感じかな?
1 2 |
convert hogehoge.jpg -pointsize 48 -fill white -strokewidth 1 -stroke black -gravity SouthEast -annotate +20+40 "$(identify -verbose hogehoge.jpg | grep 'date: modify' | cut -d ':' -f 3,4| awk '{sub("T"," ");print $0;}')" -font arial.ttf out.jpg |
長ったらしくなりましたね。
シェル作った方が賢いかな?
取りあえず説明。
以下の部分で画像情報を取り出して、そこから更新日付を抜き出して加工しています。
1 |
"$(identify -verbose hogehoge.jpg | grep 'date:modify' | cut -d ':' -f 3,4| awk '{sub("T"," ");print $0;}')" |
ImageMagickに含まれているidentifyを使って画像情報を取り出しています。
編集内容については、画像情報の内容を見てから最終的に変更する必要があるかも知れませんので、単純にこのコマンドで実現できるかどうかは環境依存と考えてください。
というこで、今回はこの程度。