📷

あるカメラアプリで撮影した画像が Amazon Photos で「日付なし」になる問題を exiftool を使って修正する

2024/06/16に公開

私は Pixel 8 Pro を使っています。
日本で発売されているスマホは写真撮影時にシャッター音が鳴ります。
私は外出先でスマホでよく写真を撮るのですが、シャッター音がなると周りの人に迷惑だろうし、音楽が一時的に止まるのでうっとおしいです。

MOD カメラについて

Google Camera Port というコミュニティがあって、 Google 純正カメラアプリをハックして機能を足したカメラアプリが共有されています。
これらのアプリは apk の形で配布されており、安全面という意味では怪しいですが、カメラの音をオフにできます。
Pixel にもともとついている Google 純正カメラアプリと同じ画質で撮影できるので、とても便利です。

AGC と Amazon Photos の相性

さて、私は BigKaka 氏による AGC9.2.14_V4.0 を使って撮影し、撮影した写真を Amazon Photos にアップロードしていたのですが、 AGC で撮影した写真が Amazon Photos の Web から見つかりませんでした。

注意深くみてみると、一番下の「日付なし」という項目にありました:

AGC では特に設定を変えない限り、ファイルのプレフィックスが AGC になります。
確かに AGC で撮影した写真には日付がありません[1]:

Google 純正カメラアプリで撮影した写真ではきちんと撮影日が表示されます:

一部の写真が日付なしとなってしまうと、 Amazon Photos の Web にから、撮影した順で写真を閲覧できなくなってしまうので、非常に不便です。

Amazon Photos はどのように撮影日を取得しているのか

Amazon のフォーラムをみると、「日付なし」で困っている人の相談が見つかります

https://jp.amazonforum.com/s/question/0D54P00008OWrEJSA1/写真が日付無しになってしまう

上記のページによると、EXIF 情報から撮影日を取得しているようです。
AGC で撮影した写真には EXIF 情報が入っていないのでしょうか

exiftool を使って EXIF を確認する

macOS では exiftool を使うとコマンドラインから EXIF を確認/編集できます

https://formulae.brew.sh/formula/exiftool

まずは Google 純正カメラアプリで撮影した写真のうち、時刻に関するタグは以下のように確認できます:

kumassy@KumachinePro android % exiftool -time:all PXL_20240616_040944014.jpg | sort -t':'
Create Date                     : 2024:06:16 13:09:44
Create Date                     : 2024:06:16 13:09:44.014+09:00
Date/Time Original              : 2024:06:16 13:09:44
Date/Time Original              : 2024:06:16 13:09:44.014+09:00
File Access Date/Time           : 2024:06:16 16:37:50+09:00
File Inode Change Date/Time     : 2024:06:16 13:25:16+09:00
File Modification Date/Time     : 2024:06:16 22:10:53+09:00
GPS Date Stamp                  : 2024:06:16
GPS Date/Time                   : 2024:06:16 04:01:15Z
GPS Time Stamp                  : 04:01:15
Modify Date                     : 2024:06:16 13:09:44
Modify Date                     : 2024:06:16 13:09:44.014+09:00
Offset Time                     : +09:00
Offset Time Digitized           : +09:00
Offset Time Original            : +09:00
Profile Date Time               : 2023:03:09 10:57:00
Sub Sec Time                    : 014
Sub Sec Time Digitized          : 014
Sub Sec Time Original           : 014

これを AGC アプリで撮影した写真と比べると、全く同じタグがついていました:

kumassy@KumachinePro android % sdiff  <(exiftool -time:all PXL_20240616_040944014.jpg | sort -t':') <(exiftool -time:all AGC_20240616_040955129.jpg | sort -t':')
Create Date                     : 2024:06:16 13:09:44         | Create Date                     : 2024:06:16 13:09:55
Create Date                     : 2024:06:16 13:09:44.014+09: | Create Date                     : 2024:06:16 13:09:55.129+09:
Date/Time Original              : 2024:06:16 13:09:44         | Date/Time Original              : 2024:06:16 13:09:55
Date/Time Original              : 2024:06:16 13:09:44.014+09: | Date/Time Original              : 2024:06:16 13:09:55.129+09:
File Access Date/Time           : 2024:06:16 16:37:24+09:00   | File Access Date/Time           : 2024:06:16 15:58:50+09:00
File Inode Change Date/Time     : 2024:06:16 13:25:16+09:00   | File Inode Change Date/Time     : 2024:06:16 15:58:48+09:00
File Modification Date/Time     : 2024:06:16 22:10:53+09:00     File Modification Date/Time     : 2024:06:16 22:10:53+09:00
GPS Date Stamp                  : 2024:06:16                    GPS Date Stamp                  : 2024:06:16
GPS Date/Time                   : 2024:06:16 04:01:15Z        | GPS Date/Time                   : 2024:06:16 04:09:46Z
GPS Time Stamp                  : 04:01:15                    | GPS Time Stamp                  : 04:09:46
Modify Date                     : 2024:06:16 13:09:44         | Modify Date                     : 2024:06:16 13:09:55
Modify Date                     : 2024:06:16 13:09:44.014+09: | Modify Date                     : 2024:06:16 13:09:55.129+09:
Offset Time                     : +09:00                        Offset Time                     : +09:00
Offset Time Digitized           : +09:00                        Offset Time Digitized           : +09:00
Offset Time Original            : +09:00                        Offset Time Original            : +09:00
Profile Date Time               : 2023:03:09 10:57:00           Profile Date Time               : 2023:03:09 10:57:00
Sub Sec Time                    : 014                         | Sub Sec Time                    : 129
Sub Sec Time Digitized          : 014                         | Sub Sec Time Digitized          : 129
Sub Sec Time Original           : 014                         | Sub Sec Time Original           : 129

EXIF にはきちんと撮影日が入っていますが、 Amazon Photos では撮影日が読み込めないようです。

Amazon Photos では EXIF に特定のタグが入っている場合、撮影日が読み込めないらしい

以下のフォーラムの投稿は興味深いです

https://amazonforum.my.site.com/Japan/s/question/0D56Q0000BUi0vPSQR/exif情報のある写真がアップロード後日付なしとなってしまう

Exif情報を編集しながら不具合発生の切り分けをしたところ、
Exifデータ内に以下が含まれている場合、Exifの日付情報が入っていても、
AmazonPhotoサーバ上で正しく日時を解析できないようです。
(このフォーラムを見て自己解決できる方のために情報記載しておきます)

0xA000 対応フラッシュピックスバージョン

AGC で撮影した写真を確認してみると、確かに 0xA00 Flashpix Version が入っていました:

kumassy@KumachinePro android % exiftool -EXIF:All -H AGC_20240616_040955129.jpg | sort -t':' | grep 0xa000
0xa000 Flashpix Version                : 0100

ただ Google 純正カメラアプリで撮影した写真でも、 0xA00 Flashpix Version が入っていました。 Google 純正カメラアプリで撮影した写真は Amazon Photos 上でも撮影日が表示されるので、このタグは問題なさそうです

kumassy@KumachinePro android % exiftool -EXIF:All -H PXL_20240616_040944014.jpg | sort -t':' | grep 0xa000
0xa000 Flashpix Version                : 0100

EXIF 情報を見比べる

AGC で撮影した写真とGoogle 純正カメラアプリで撮影した写真の EXIF を exiftool -EXIF:All で比較すると、以下のようになります:

kumassy@KumachinePro android % sdiff  <(exiftool -EXIF:All -H PXL_20240616_040944014.jpg | sort -t':') <(exiftool -EXIF:All -H AGC_20240616_040955129.jpg | sort -t':')


0x0000 GPS Version ID                  : 2.2.0.0                0x0000 GPS Version ID                  : 2.2.0.0
0x0001 GPS Latitude Ref                : North                  0x0001 GPS Latitude Ref                : North
0x0001 Interoperability Index          : R98 - DCF basic file   0x0001 Interoperability Index          : R98 - DCF basic file
0x0002 Interoperability Version        : 0100                 <


0x010f Make                            : Google                 0x010f Make                            : Google
0x0110 Camera Model Name               : Pixel 8 Pro            0x0110 Camera Model Name               : Pixel 8 Pro
0x0112 Orientation                     : Horizontal (normal)    0x0112 Orientation                     : Horizontal (normal)
0x011a X Resolution                    : 72                     0x011a X Resolution                    : 72
0x011b Y Resolution                    : 72                     0x011b Y Resolution                    : 72
0x0128 Resolution Unit                 : inches                 0x0128 Resolution Unit                 : inches
0x0131 Software                        : HDR+ 1.0.641377693zd | 0x0131 Software                        : HDR+ 1.0.585804401zd
0x0132 Modify Date                     : 2024:06:16 13:09:44  | 0x0132 Modify Date                     : 2024:06:16 13:09:55

AGC で撮影した写真には 0x0002 Interoperability Version が含まれないことがわかります。

試しに 0x0002 Interoperability Version を設定してみると、

kumassy@KumachinePro android % exiftool -InteropVersion=0100 AGC_20240616_040955129.jpg
Warning: [minor] Entries in IFD0 were out of sequence. Fixed. - AGC_20240616_040955129.jpg
    1 image files updated

撮影日が表示されるようになりました!

破損した EXIF 情報を直す (2024/06/18 追記)

上記の方法を実施しても、一部の写真は撮影日が読み込めませんでした。
Google 純正アプリで撮影した写真と EXIF を見比べていくつかのタグを追加・削除・編集しましたが、効果はありませんでした。

いろいろと試してみた結果、どうも EXIF の領域が破損しているようでした。
最終的には次のようなコマンドで直すことができました。これは写真についている EXIF を一度すべて削除し、新たに元の EXIF タグをつけ直すという操作を表します:

exiftool -overwrite_original -P -exif:all= -tagsfromfile @ -all:all -unsafe fixme.jpg

mac と Android の間で写真を転送する

Android File Transfer が便利です [2]
Finder と同じ操作感で複数のファイルをまとめて転送できますし、コピーしたファイルのタイムスタンプがそのまま保存されるのもよい仕様です。

ただ、大量のファイルが含まれるフォルダを開くとアプリがフリーズしたようにみえます。
8000 枚の写真があるフォルダを開くとだいたい 10 分程度は何も操作を受け付けなくなります。

他の MOD カメラ

AGC 以外の MOD カメラも試してみました。
MGC_9.2.113_A11_V12 は EXIF のタグが Google 純正カメラアプリとほぼ同じなので、今後はこれを使うことにしました。
アプリの使用感は純正アプリとほぼ同じです。アプリのアイコンまで一緒なので、純正アプリと見分けがつかないのが難点です。

とはいえ、特に理由がない場合はやはり純正アプリを使うのがよさそうです。

まとめ

  • Amazon Photos では EXIF に含まれる撮影日を撮影日として表示する
  • Amazon Photos では特定の EXIF タグが含まれるか、あるいは含まれない場合、 EXIF に撮影日が含まれる場合であっても「日付なし」となってしまうことがある
  • exiftool を使うと EXIF を簡単に確認/編集することができる
  • MOD カメラを使うときは写真の EXIF が意図した形式になっているかも確認しよう
脚注
  1. Google フォトだと撮影日がきちんと表示されます。普段は Google フォトを使っているのですぐに問題になるわけではありませんが、オリジナル画質の写真を取り出したいときに Amazon Photos を使うので、 Amazon Photos でも撮影日がわからないと問題です ↩︎

  2. 2024/06/16 現在サイトが壊れており、 .dmg をダウンロードできません。 WebArchive から古いページをみることで .dmg をダウンロードできます: https://web.archive.org/web/20240517192417/https://www.android.com/filetransfer/ ↩︎

Discussion