コンテキスト

コンテキスト

コンテキスト

iPhoneの写真両方:縦と横にはImageMagick 7.0.10-62 Q16 x86_64 2021-02-07 + Catalina MacOsを介してEXIFデータにタイムスタンプが割り当てられます。 ImageMagickは次のようにインストールされます。brew install ImageMagick

風景画像は重力マップに従います。

この-gravityオプションは、画像にコメントを追加するために使用される参照フレームを指定します。注釈付き風景- ようこそ写真はコンベンションに従います。

ここに画像の説明を入力してください。ここに画像の説明を入力してください。

問題:ポートレート画像のコメントが回転しました

注釈付き肖像画- 方向写真のため参照フレームの回転が発生します。

ここに画像の説明を入力してください。ここに画像の説明を入力してください。

関連コード:

rm time*.jpeg
tic=$(date)
for img in IMG*jpeg; do convert "$img" -gravity Center -resize 35% -pointsize 65 \
   -fill red  -annotate +30+30  %[exif:DateTimeOriginal] "time_""$img";
   echo "watermarked $img successfully" 
done
toc=$(date)
echo $tic 
echo $toc

質問

ポートレート画像が検出されたら、テキストを回転させるアルゴリズムを適用できますが、より簡単な方法があるか、上記のコードがある点で間違って参照フレームが+90だけ回転するように見えます。風景写真にはこの問題はありません。

  1. 人物写真では重力基準系が90度回転するが、風景写真では回転しないのはなぜですか? (機能か欠陥か?)
  2. gravity一貫した/単一参照フレームを採用する方法は?
    • 好ましくは、非回転基準フレーム

答え1

ポートレート画像はOrientationExifタグで回転します。したがって、画像を回転すると、追加されたタイムスタンプが正確になります。

ポートレート画像(Exifを介して回転):

$ identify -verbose IMG_6361.jpeg | grep Orientation
  Orientation: RightTop
    exif:Orientation: 6
$ exiftool IMG_6361.jpeg | grep 'Orient\|Width\|Height'
Orientation                     : Rotate 90 CW
Exif Image Width                : 4032
Exif Image Height               : 3024
Image Width                     : 4032
Image Height                    : 3024

水平画像(回転しない):

$ identify -verbose IMG_1690.jpeg | grep Orientation
  Orientation: TopLeft
    exif:Orientation: 1
$ exiftool IMG_1690.jpeg | grep 'Orient\|Width\|Height'
Orientation                     : Horizontal (normal)
Exif Image Width                : 4032
Exif Image Height               : 3024
Image Width                     : 4032
Image Height                    : 3024

方向を「左上」に変更するには、ImageMagickの- 自動方向次のオプション

$ convert -auto-orient IMG_6361.jpeg IMG_6361_auto_orient.jpeg
$ exiftool IMG_6361_auto_orient.jpeg | grep 'Orient\|Width\|Height'
Orientation                     : Horizontal (normal)
Exif Image Width                : 4032
Exif Image Height               : 3024
Image Width                     : 3024
Image Height                    : 4032

コマンドには-auto-orient次のものが含まれます。

for img in IMG*jpeg; do convert "$img" -auto-orient -gravity Center -resize 35% -pointsize 65 \
   -fill red  -annotate +30+30  %[exif:DateTimeOriginal] "time_""$img";
   echo "watermarked $img successfully" 
done

結果:

ここに画像の説明を入力してください。

関連情報