画像の修正時間を保存するには、mogrify / imagemagickを使用してください。

画像の修正時間を保存するには、mogrify / imagemagickを使用してください。

家族の写真は非常に多いですが、完全な解像度は必ずしも必要ではありません。 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

あなたはそれを使用することができますイメージマジシャン mogrify800x800より大きいファイルは、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

関連情報