家族の写真は非常に多いですが、完全な解像度は必ずしも必要ではありません。 mogrifyを使いたいのですが、サンプル画像セットに使ってみましたが、ファイル修正時間が現在時刻に設定されているようです。元のイメージの修正/作成時間を保存する方法はありますか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
画像は、1000×1000の境界ボックスに収まるようにサイズ変更されます。
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
答え3
よく分からないイメージマジシャンしかし、GraphicsMagickこれに対する基本的なサポート。
$ ls -lh family_photo.jpg
-rw-r--r-- 1 justin justin 901K Sep 9 2007 family_photo.jpg
$ gm mogrify -preserve-timestamp -rotate -90 family_photo.jpg
$ ls -lh family_photo.jpg
-rw-r--r-- 1 justin justin 681K Sep 9 2007 family_photo.jpg