我有大量的家庭照片,但我并不真正需要全分辨率。我想使用 mogrify,但我在一组示例图像上尝试了它,它似乎将文件的修改时间设置为当前时间。有什么方法可以保留原始图像的修改/创建时间(对于 EXIF 数据和 Linux 的本机文件修改时间,您可以使用查看stat
)?
答案1
你总是可以通过一些脚本来做到这一点:
exiftool -q -r -ext jpg -if '
$ImageWidth > 1000 ||
$ImageHeight > 1000 and
!print "$Directory/$Filename\0"' . |
xargs -r0 sh -c '
for file do
mv -i "$file" "$file.back" &&
convert -resize "1000x1000>" "$file.back" "$file" &&
touch -r "$file.back" "$file"
done' sh
这里调整图像大小,使它们适合 1000x1000 的边界框。
exiftool
用于查找需要调整大小的图像convert
调整它们的大小(不影响 exif 信息)touch -r
从备份文件中恢复原始时间戳
答案2
您可以使用图像魔术师 mogrify
降低分辨率(调整大小)任何大于 800x800 的文件以适合 800x800 并保留其时间戳,如下所示:
magick mogrify -define preserve-timestamp=true -resize '800x800>' *.jpg
如果您想首先测试而不覆盖原始文件,而是将调整大小的文件写入名为 的新目录RESIZED
,您可以执行以下操作:
mkdir RESIZED
magick mogrify -path RESIZED -define preserve-timestamp=true -resize '800x800>' *.jpg