サイズを変更する画像がたくさんありますが、作成日を変更したくありません。Automator、Photoshop、Preview を使用しようとしましたが、使用するたびにソフトウェアによって写真の作成日が変更されます。
誰かアイデアがあれば教えてください。
答え1
サイズを変更する画像がたくさんありますが、作成日を変更したくありません。Automator、Photoshop、Preview を使用しようとしましたが、使用するたびにソフトウェアによって写真の作成日が変更されます。
作成日と変更日を混同していませんか? 結局のところ、ファイルが変更されてもファイルの作成日は変更されるべきではありません。それが変更日の目的です。
画像のサイズを変更するためにどのような方法を使用しているかはわかりませんが、私が知っている限りでは、画像のディレクトリを取得し、スクリプトにソース画像に基づいて派生画像を作成するように指示すると、新しく作成された派生画像は、何らかの方法で処理された元の画像の新しいコピーであるため、作成日が新しくなります。
しかし、処理して基本的に上書きしたい画像がいっぱいのディレクトリがある場合、優れたコマンドラインツールをインストールして使用することをお勧めします。イメージマジック公式バイナリ経由でMac OS X用のImageMagickをインストールするのが不安な場合は、コマンドラインに慣れていない場合は混乱するかもしれませんが、Cactuslabが提供する素晴らしいMac OS Xパッケージインストーラーが存在するまたは、ImageMagickを自家製インストールしてからbrew install imagemagick
コマンドラインから実行して ImageMagick をインストールします。
インストールしたら、次のような簡単なBashスクリプトを実行できます。find
ImageMagickで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 heic
Photo に写真を追加すると、適切な場所に配置されます。お役に立てれば幸いです。