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:2404:10:2023 09:29.

如果您的图像没有 EXIF 数据,您也许可以找到其他时间信息,例如'%[date:create]'identify -verbose在文件上使用可列出所有属性。

要计算注释的合适磅值,您可以类似地使用identify来查找图像的宽度:

identify -format '%w' myphoto.jpg

图像魔法有很多例子和替代方案。这是一个小的 shell 脚本:

#!/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

注释玫瑰

相关内容