Imagemagick、写真撮影日を画像に印刷する方法

Imagemagick、写真撮影日を画像に印刷する方法

DebianのImagemagick 6.9.11-60。写真を撮影した日時を画像にどのように印刷しますか? (既存の画像)。カメラ設定でこのオプションを設定しましたが、新しい写真でのみ機能します。日付は画像メタデータにあります。写真を撮った実際の日付でなければならず、PCのハードドライブに保存された日付ではありません。

答え1

あなたが持っている画像やメタデータによって多くのことが変わるかもしれませんが、例えばImageMagickを使うと、次のようにEXIF日付とmyphoto.jpg時刻を印刷できます。

magick myphoto.jpg -fill black -undercolor white -pointsize 96 -gravity southeast \
 -annotate 0 ' %[exif:datetime] ' output.jpg

magick対応するコマンドがなければconvert正常に動作します。 ISO以外の日付形式が必要な場合は、まず別のツールを使用して日付を抽出してidentify操作できます。awk

identify -format '%[exif:datetime]' myphoto.jpg |
 awk -F'[ :]' '{print $3":"$2":"$1 " " $4":"$5}'

2023:10:04 09:29:24に変わります04:10:2023 09:29

画像にEXIFデータがない場合は、他のタイミング情報(たとえば)を見つけることができます'%[date:create]'identify -verboseすべての属性を一覧表示するには、ファイルに使用してください。

注釈に適した点のサイズを計算するには、次のようにidentify画像の幅を見つけることができます。

identify -format '%w' myphoto.jpg

バラよりイメージマジック多くの例と選択肢があります。以下は小さなシェルスクリプトです:

#!/bin/bash
let ps=$(identify -format '%w' input.jpg)/20
# 2023:10:04 09:29:24
datetime=$(identify -format  %[exif:datetime] input.jpg)
if [ -z "$datetime" ]
then    # date:create: 2023-11-11T14:40:21+00:00
        datetime=$(identify -format  %[date:create] input.jpg)
fi
datetime=$(echo "$datetime" | gawk -F'[- :T+]' '{print $3":"$2":"$1 " " $4":"$5}' )
magick input.jpg -fill black  -undercolor white -pointsize "$ps" -gravity southeast \
 -annotate 0 "$datetime" output.jpg

アノテーションローズ

関連情報