RunDiaryの撮影情報にGPS情報を埋め込む=exifパズルの回答(?)です。
<調査>
iPhoneカメラで撮影したjpg画像には、以下のようにGPSInfoIFDPointer(GPS-IFD-Ptr)がIFD最後に追加されている。GPS-IFD-Ptrの先には8個のGPSタグがある。
(1)GPSLatitudeRef 南北(=N=北)
(2)GPSLatitude 緯度へのオフセット
(3)GPSLongitudeRef 東西(=E=東)
(4)GPSLongitude 経度へのオフセット
(5)GPSAltitudeRef 高度基準
(6)GPSAltitude 標高へのオフセット
(7)GPSTimeStamp GPS時間へのオフセット
(8)GPSDOP 即位の信頼性へのオフセット
緯度、経度へのオフセットはAPPIからのオフセットなので実際のファイル位置へはファイル先頭部分の12バイトを加えた値になる。
のような事を調べて、結局以下のような事をやれば、RunDiaryで撮影したjpgにGPS情報を埋め込めそうだ。
<回答>
アプリで撮影したJPGデータに。。
1)GPS-IFD-Ptrを追加する(12=0x0cバイト)
2)ExifIFDPointer+12バイト位置に、GPSタグ・GPSデータ部分を追加する(0x0baバイト)
3)かくオフセット、サイズを調整する
0x0004 =APPIサイズに(0x0c+0x0ba)加える
0x002c =XResolutionに(0x0c)加える
0x0038 =XResolutionに(0x0c)加える
0x005c =ExifIFDPointerに(0x0c+0x0ba)加える
4)GPSデータ部分の値を、実際のオフセット、緯度、経度、。。。などに再設定する。
0x0096 =緯度へのオフセットを(0x0d8)にする
0x0d8から緯度を設定する
0x00AE =経度へのオフセットを(0x0f0)にする
0x0f0から経度を設定する
0x00c6 =標高へのオフセットを(0x0108)にする
0x0108から標高を設定する
0x00d2 =GPS時間へのオフセットを(0x0110)にする
0x0110から時間を設定する
0x00de =即位の信頼性へのオフセットを(0x0128)にする
0x0128から即位の信頼性を設定する
。。。
のような事を調査・設定した結果は大体以下のような感じ
<参考にしたiPhoneカメラexif情報>
Camera-Specific Properties:
Equipment Make: Apple
Camera Model: iPhone 3G
Camera Software: 3.1
Sensing Method: One-Chip Color Area
Image-Specific Properties:
Image Orientation: Top, Left-Hand
Horizontal Resolution: 72 dpi
Vertical Resolution: 72 dpi
Image Created: 2009:10:03 13:29:26
F-Number: f/2.8
Exposure Program: Normal Program
Lens Aperture: f/2.8
Metering Mode: Average
Flash: No Flash Function
Color Space Information: sRGB
Image Width: 1600
Image Height: 1200
Exposure Mode: Auto
White Balance: Auto
Latitude: N 33ー 7.17'
Longitude: E 131ー 47.88'
Altitude: 34.00 m
Time (UTC): 13:29:26.26
<元のexif情報>
Camera-Specific Properties:
Image-Specific Properties:
Image Orientation: Top, Left-Hand
Horizontal Resolution: 72 dpi
Vertical Resolution: 72 dpi
Color Space Information: sRGB
<修正結果のexif情報>
Camera-Specific Properties:
Image-Specific Properties:Image Orientation: Top, Left-Hand
Horizontal Resolution: 72 dpi
Vertical Resolution: 72 dpi
Color Space Information: sRGB
Latitude: N 33ー 7.17'
Longitude: E 131ー 47.88'
Altitude: 34.00 m
Time (UTC): 13:29:26.26
大体良さそう。。JPGとして画像も一応見えているが。。ただしexiftag.exeでは「skipped spurious byte in JPEG」とワーニングが出ているので、もう少し調整が必要なようです。
まあ、いい加減ですが、exifパズルを解いた結果は上記のような事なので、簡単にプログラム化できます。これならライセンス違反にはならないので自由に使えます。