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
看图像魔法有很多例子和替代方案。这是一个小的 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