Mac OS Xで作成日を変更せずに画像を一括でサイズ変更する

Mac OS Xで作成日を変更せずに画像を一括でサイズ変更する

サイズを変更する画像がたくさんありますが、作成日を変更したくありません。Automator、Photoshop、Preview を使用しようとしましたが、使用するたびにソフトウェアによって写真の作成日が変更されます。

誰かアイデアがあれば教えてください。

答え1

サイズを変更する画像がたくさんありますが、作成日を変更したくありません。Automator、Photoshop、Preview を使用しようとしましたが、使用するたびにソフトウェアによって写真の作成日が変更されます。

作成日と変更日を混同していませんか? 結局のところ、ファイルが変更されてもファイルの作成日は変更されるべきではありません。それが変更日の目的です。

画像のサイズを変更するためにどのような方法を使用しているかはわかりませんが、私が知っている限りでは、画像のディレクトリを取得し、スクリプトにソース画像に基づいて派生画像を作成するように指示すると、新しく作成された派生画像は、何らかの方法で処理された元の画像の新しいコピーであるため、作成日が新しくなります。

しかし、処理して基本的に上書きしたい画像がいっぱいのディレクトリがある場合、優れたコマンドラインツールをインストールして使用することをお勧めします。イメージマジック公式バイナリ経由でMac OS X用のImageMagickをインストールするのが不安な場合は、コマンドラインに慣れていない場合は混乱するかもしれませんが、Cactuslabが提供する素晴らしいMac OS Xパッケージインストーラーが存在するまたは、ImageMagickを自家製インストールしてからbrew install imagemagickコマンドラインから実行して ImageMagick をインストールします。

インストールしたら、次のような簡単なBashスクリプトを実行できます。findImageMagickでconvert画像を処理するコマンドツール:

find -E 'Desktop/Pics' -type f -iregex '.*\.(JPG|JPEG|PNG|TIF|TIFF)$' |\
  while read FULL_IMAGE_PATH
  do
    convert -density 72 -units PixelsPerInch -resize "1500x1500>" -quality 90 "${FULL_IMAGE_PATH}" "${FULL_IMAGE_PATH}"
  done

この例では、スクリプトはPics/作業ユーザーのデスクトップ上のディレクトリを検索し、Pics/その中の拡張子が JPG、JPEG、PNG、TIF、または TIFF であるファイルを検索します。検索では大文字と小文字が区別されないため、小文字のバージョンも検索されます。画像が見つかると、画像の DPI を 72 に変換し、PPI (Pixels Per Inch) 単位を使用して変換し、画像の最長辺が 1500 ピクセルより大きい場合は、画像の最長辺に基づいて幅/高さを 1500x1500 ピクセルに変更します。画像品質も 90 に設定されています。

私は、比較的高解像度でありながら Web 対応にしたい画像を処理するために、このシンプルな Bash スクリプトを使用しています。ただし、そのコマンドは、必要に応じて調整および微調整できます。本当の魔法は、findディレクトリ ツリーをトラバースして画像をその場で上書きするロジックです。これにより、ファイルの作成日は保持され、変更日のみが変更されます。

答え2

を使用しているにもかかわらず、一部の写真が日付を保持せずに変換された理由を解明するために数時間を費やした結果、mogrify -define preserve-timestamp=true次のことがわかりました。

報告

「誕生日」ファイルは重要なようです (特に Apple フォトの場合)。次の方法でアクセスできます。stat -x pic.jpg次のようなものが表示されます。

  File: "pic.jpg"
  Size: 186321       FileType: Regular File
Access: Thu Apr 11 09:19:19 2024
Modify: Tue Jan  5 09:14:41 2021
Change: Thu Apr 11 09:19:18 2024
 Birth: Mon Jan  4 16:40:00 2021 ← here is the important one !

ツール

stat

すでに述べたように、preserve-timestamp生年月日は保存されないようですので、stat生年月日を取得するには次のコマンドを使用しています。

$ stat -f "%SB" -t "%Y:%m:%d %T%z" pic.jpg
2021:01:04 16:40:00+0100 ← to get a clean birth date
$ stat -f "%Sm" -t "%Y:%m:%d %T%z" pic.jpg
2021:01:05 09:14:41+0100 ← to get a clean modify date

exiftool

exiftool変換したファイルに保存するには:

exiftool "-FileCreateDate=2021:01:04 16:40:00+0100" "-FileModifyDate= 2021:01:05 09:14:41+0100" pic.heic

結果を一言で表すと

jpg以下は、Apple フォトからエクスポートした後、に変換する例ですheic(ファイル名に「jpg」が含まれるスマート フォルダー フィルタリングから)。

for i in *.jpg ; 
do convert $i "${i%.*}.heic" 
&& exiftool -q "-FileCreateDate=$(stat -f "%SB" -t "%Y:%m:%d %T%z" "$i")" "-FileModifyDate=$(stat -f "%Sm" -t "%Y:%m:%d %T%z" "$i")" "${i%.*}.heic" ; 
done

かなり遅いですが (1,5Go で 1700 枚の写真に 30 分以上)、求めていた結果が得られました。誕生日はまったく同じで (サイズは 1,5Go から 530Mo に縮小されました)。Apple heicPhoto に写真を追加すると、適切な場所に配置されます。お役に立てれば幸いです。

関連情報