语境
iPhone 照片两者:肖像和风景都带有 EXIF 数据时间戳,通过 ImageMagick 7.0.10-62 Q16 x86_64 2021-02-07 + Catalina MacOs。 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。风景照片不会遇到这个问题。
- 为什么纵向图像的重力参考系旋转 90 度,而不是横向图像? (特点还是缺陷?)
- 如何采用一致/单一的
gravity
参考框架?- 最好是非旋转参考系
答案1
肖像图像通过 ExifOrientation
标签进行旋转。因此,如果我们旋转图像,添加的时间戳是正确的。
肖像图像(通过 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
结果: