2016年2月1日月曜日

なんとかしちゃえばいいのよ。:EXIFの日付が「2002/12/08 12:00:00」になってしまう件

こんばんわー。
「あーだめだこりゃ絶対!」と思ったことでも、意外なところにブレイクスルーがあるもんですね。

というわけで、今日の投稿はどちらかというと自分のための備忘録。ごめんちゃい。

・・・実は、仕事で公開しているAndroidのカメラアプリ「CALBAN Pro」で、撮影した写真のEXIFデータが「2002/12/08 12:00:00」となってしまう、という不具合があったんです。

やー、別に日付のところは何もいじってないしなー、おかしいなー・・・と思って色々調べてたら、どうもAndroidのライブラリに不具合あったらしく・・・。
えええー。そんなんどうしようもないよー。
でも何とかせんと、ユーザーさん困るしなー・・・。

ま、何なら自分でEXIFタグに現在時刻を設定しちゃえばいいのよ。うふふ。
ということで、直してみました。
こんな感じで時刻を作成して・・・

Date date = new Date();
SimpleDateFormat format_exif = new SimpleDateFormat(getString("yyyy:MM:dd HH:mm:ss"), Locale.JAPAN);
String datetime_original = (format_exif.format(date));
TiffOutputDirectoryに日付をセット。
destDirectory.removeField(ExifTagConstants.EXIF_TAG_DATE_TIME_ORIGINAL);
destDirectory.add(ExifTagConstants.EXIF_TAG_DATE_TIME_ORIGINAL, datetime_original);
destDirectory.removeField(ExifTagConstants.EXIF_TAG_DATE_TIME_DIGITIZED);
destDirectory.add(ExifTagConstants.EXIF_TAG_DATE_TIME_DIGITIZED, datetime_original);
で、ExifRewriter()を使ってメタデータを書き換え。
ExifRewriter().updateExifMetadataLossy(file, BufferedOutputStream, TiffOutputSet);
・・・最初は「updateExifMetadataLossy」ではなくて、「updateExifMetadataLossless」を使っていたのですが、それだとエラーでうまくいかなかったです。ちょっとした違いなのになー。

ま、うまくいったからいいや。