画像ファイルの隅にファイル名をテキストとして追加

画像ファイルの隅にファイル名をテキストとして追加

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

関連情報