Motolora moto g24 でEXIFの撮影日時がつかない写真を修正するアプリを作った
Motolora moto g24 のカメラ機能の問題点
Xiaomi 14 Ultraを使っていたのですが、車に轢かれて文鎮となってしまったので、やむにやまれず moto g24 を購入しました。
販売金額と性能のバランスが良く、無職の自分はもうこれでいいかと思っていたのですが、写真をGoogle Photoにアップロードすると一部の写真だけ時系列に並ばない事に気づきました。
そこで少し調べてみると以下のURLにたどり着きました。
【以下,アップデート後に残るカメラアプリの不具合 2024/8/31追記】
標準カメラアプリは,状況に応じて自動でHDRを適用し,適切な画像を得るように調整してくれます。しかし!!なぜか,HDR(や,ナイトビジョン等)の設定を適用した写真には,撮影日時のExif情報が書き込まれないことに気づきました。これは,写真をPC等で読み込んでアルバムにする際に,撮影日時順に並ばないことになって,極めて由々しき不具合です。
緊急的に,HDRを自動適用しないようにしようとしたのですが,何と言う親切設計でしょう,カメラアプリを再起動するたびに,必ずHDR自動適用のスイッチがオンになる仕様です。やっぱりカメラはまともに使えません。
自分の環境でも、この方が報告されているように、なぜか HDR や ポートレイトモードで撮影すると、撮影日時のEXIFが書き込みされていませんでした。
カメラのシャッター音やオートフォーカス時に爆音がなる問題などもありましたが、それらはシステムアップデートで修正されたので、この問題もすぐに修正されるのかと思いきや、数カ月たってもそのままなので、自分で対応する事にしました。
ファイル名を元にしてEXIFを書き込む
デフォルトのカメラでとった写真は以下のようなファイル名で保存されます。
IMG_20241208_180016062_HDR.jpg
IMG_20241207_114516786_MFNR_PORTRAIT.jpg
ファイル名に撮影時刻と撮影モードが記載されているので、撮影モードを見てアタリをつけつつ、撮影時刻をEXIFに書き込めば自分で修正できそうです。
アプリを作ってみた
スマホ上でワンボタンで修正したかったので、flutter を使ってアプリを作ってみました。
以下のページのapkをインストールすることで試すことができます。
使い方
ストレージの書き込み権限を許可したら、「Update Exif Data」ボタンをクリックすると、カメラフォルダにあるすべてのファイルを精査して撮影日時のないデータに全自動でEXIFを追加していきます。元ファイルを直接書き換えます。強引なプログラムですね。
感想
比較的新しいAndroidだと、ファイルへのアクセス権限周りの実装が変わっていて激ハマりしたのですが、それでもほぼ1日でアプリを作れました。Github Copilot Free と ChatGPT のおかげです。
最近はパソコンよりもスマホを触っている時間の方が長いので、こういった小物のツール類をAndroid上で動くように実装すると時短になりそうです。
Discussion