我有一个文件夹,其中包含从 iPhone 传输的大量 .heic 文件,出于与另一个无法读取 HEIC 的软件的兼容性原因,我需要将这些文件保存为 JPG 格式。我尝试了各种方法,它们都创建了具有自己时间戳的新文件,这些文件不尊重原始照片的创建和修改时间。
我会使用 libheif 中的 heif-convert cli 实用程序来进行转换,但任何其他实现都可以。然后,考虑到所有文件都区分大小写,以
.heic
结尾,我将循环遍历该文件夹中的文件(即打开终端并 cd 到包含要转换的图像的文件夹)。对于每个文件,该循环会将 heic 转换为 jpg,并在转换后从原始文件中读取 btime,并使用 SetTime 等将其设置为创建和修改日期。您也可以使用 touch 而不是 SetTime,但该命令采用另一种格式的输入。
这是我用来解决这个问题的一个小片段。
for file in *.heic; do
echo "Converting $file to ${file%%.heic}.jpg"
heif-convert "$file" ${file%%.heic}.jpg
echo "reading original creation date"
date=$(stat -f "%SB" -t "%m/%d/%y %H:%M:%S" "$file")
echo "writing original creation date as modification and creation date"
SetFile -md "$date" ${file%%.heic}.jpg
done
使用 ImageMagick:
convert * %03d.jpg