Jpeg画像がたくさんあります。 001abcd.jpg
、002abcd.jpg
などと発声してください。
ファイル名をキャプチャして、画像自体の1つのコーナーにテキストとして追加します。したがって、結果は、たとえば、ファイル003abcd.jpg
には、その画像の1つのコーナーに「003abcd」が刻印されます。 (拡張子はそこにある必要はありません。)
何百もの画像をバッチ処理して、それぞれの画像に独自のファイル名を追加できる端末コマンドが必要です。
Linux Mint 17を使用しています。
Imagemagickは便利だということが何かでわかりますが、スクリプトについては知りません。
すべての画像に単一の共通テキストを入れるのは簡単です。しかし、一意のファイル名をそれぞれの画像のテキストとして一度に配置する方法がわかりません。
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
実際、ImageMagickを使用して text を画像に書き込むことができます。 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
ファイルのリストを表し、このループはoriginal
ディレクトリ内のすべての.jpg
ファイルに作用します。ループ本体では、"$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