
JPEG画像がたくさんあります。001abcd.jpg
、、、ちょっと待ってください002abcd.jpg
。
ファイル名をキャプチャして、画像自体の角にテキストとして追加したいと思います。例えば、結果は、ファイルの003abcd.jpg
画像エッジに「003abcd」が印刷されることである。 (拡張子はなくても構いません。)
何百もの画像をバッチ処理し、各画像に独自のファイル名を追加できる端末コマンドが必要です。
私はLinux Mint 17を使用しています。
imagemagickが役に立つことはわかりますが、スクリプトを理解していません。
すべての画像に共通のテキストを配置するのは簡単です。しかし、その画像の一意のファイル名をテキストとして一度に取得する方法がわかりません。
答え1
mogrify
バッチ処理を行うので、次のようなものを使用できます(フォント、サイズ、色、位置などを好みに合わせて変更)。
mogrify -font Liberation-Sans -fill white -undercolor '#00000080' \
-pointsize 26 -gravity NorthEast -annotate +10+10 %t *.jpg
%t
拡張子()を持たないファイル名をjpg
現在のディレクトリのすべてのsに追加します。例orca-lm-1.jpg
:
ファイルが上書きされますので、バックアップコピーがあることを確認してください。たとえば、出力ファイルに別の形式を使用すると、元の
ファイルは変更されません。png
mogrify -format 'png' -font Liberation-Sans -fill white -undercolor \
'#00000080' -pointsize 26 -gravity NorthEast -annotate +10+10 %t *.jpg
答え2
実際にImageMagickを使って書くことができます。テキストイメージとして。使用convert
イメージを新しいファイルに変換するユーティリティ(またはmogrify
ファイルをその場で変換しますが、間違えれば元のファイルを失う可能性があるためお勧めできません)。以下を使用してテキストを指定できます。-annotate
以下を含めることができるオプションエスケープシーケンスたとえば、%t
ディレクトリや拡張子のないファイル名です。場所、サイズ、フォント、色などを制御するためのより多くのオプションがあります。
ファイルがoriginal
現在のディレクトリのサブディレクトリにあるとします。ディレクトリを作成しますlabeled
。
mkdir labeled
画像を変換するには、convert
次のように呼び出します。
convert original/001abcd.jpg -fill green -pointsize 20 -annotate +0+0 %t -gravity north-east labeled/001abcd.jpg
次の最初のパラメータは、-annotate
テキストの位置を示す幾何学です。+0+0
これがコーナーです。-gravity north-east
これが右上隅だとしましょう。 2番目のパラメータはテキストです。ここでは、「ファイル名の使用」を意味するエスケープシーケンスです。
.jpg
ディレクトリ内のすべてのファイルを変換するには、ループを作成します。ワイルドカードパターンは*.jpg
ファイルのリストを表し、.jpg
このループはディレクトリ.jpg
内のすべてのファイルに対して機能しますoriginal
。ループ本文では、"$x"
ディレクトリ部分のあるファイル名を参照し、"${x##*/}"
ディレクトリ部分のないファイル名を参照します。
for x in original/*.jpg; do
convert "$x" original/001abcd.jpg -fill green -pointsize 20 -annotate +0+0 %t -gravity north-east "labeled/${x##*/}"
done