我正在创建一个bash脚本,用于重命名照片,使它们的文件名包含日期和时间信息。我想使用ImageMagick的identify
工具来构建文件名。
identify -format "IMG_%[EXIF:DateTime].jpg" myphoto.jpg
我想对日期和时间进行格式化处理。我该如何使用ImageMagick实现?identify
是否支持格式化处理?
我正在创建一个bash脚本,用于重命名照片,使它们的文件名包含日期和时间信息。我想使用ImageMagick的identify
工具来构建文件名。
identify -format "IMG_%[EXIF:DateTime].jpg" myphoto.jpg
我想对日期和时间进行格式化处理。我该如何使用ImageMagick实现?identify
是否支持格式化处理?
使用date
实用工具重新格式化日期值。运行man date
,并查看其他问题/答案以获取示例。
img_date=$(identify -format "%t_%[EXIF:DateTime]" input.jpeg)
#=> 2018:07:25 06:28:41
my_date=$(date -j -u -f "%Y:%m:%d %H:%M:%S" "$img_date" +"%Y-%m-%d")
#=> 2018-07-25
convert input.jpeg "output_${my_date}.jpeg"
#=> output_2018-07-25.jpeg
datetime=$(identify -format "%[EXIF:DateTime]" P1050001.JPG | tr " " "_" | tr ":" "-")
inname=$(identify -format "%t" P1050001.JPG)
convert P1050001.JPG ${inname}_${datetime}.jpg
这将创建一个名为P1050001_2009-12-05_16-59-51.jpg的新文件。
或者,您也可以将前两个步骤合并为:
newname=$(identify -format "%t_%[EXIF:DateTime]" P1050001.JPG | tr " " "_" | tr ":" "-")
convert P1050001.JPG ${newname}.jpg
如果您不想使用转换来创建新的图像,则可以使用操作系统重命名原始文件。
如Mark Setchell所建议的那样,使用exiftool可能更容易完成所有这些操作。
exiftool
来完成这个任务。 - Mark Setchellexiftool
是一个非常好的工具。我之前知道它的存在,但现在我发现它非常强大(尽管它的文档可能需要改进)。这是我的问题的解决方案(但不是我的问题的答案):exiftool "-FileName<CreateDate" -d "IMG_%Y%m%d_%H%M%S.jpg" myphoto.jpg
。 - Vytenis Bivainis