-To merge GPX data into the EXIF of JPEG files.-
Jpeg GPX Merger
〜GPX形式のGPS情報をJPEGファイルへ記録するツール〜
Jpeg GPX Mergerは,GPSにより記録されたGPX形式の位置情報と,デジタルカメラの一般的な画像ファイル形式であるJPEGファイルをマージして,位置情報(GPS-IFD,Geoタグと呼ぶ場合もあるようです)付きJPEG画像ファイルを生成するツールです.どなたでも無料で使用することができます.
本ツールで生成されたJPEGファイルは,Flicker などの画像共有サービスや Google Picasa,SONY Picture Motion Browserなど,GPS情報を活用した画像ファイル管理ソフトウェアにて活用することができます.これらのサービスやソフトウェアでは,地図上の撮影した場所へ自動的に画像ファイルが貼りつけられますので,画像ファイルの管理がより直感的で分りやすいものになります.
本ツールと同様の目的のソフトウェアはすでに存在するようですが,マージ処理に特化することで扱いやすいプログラムにしました.また,Javaと呼ばれるマルチプラットホーム言語により開発することで,Windows以外のプラットホームでも動作します.Javaは携帯電話向けアプリケーション(iアプリなど)の開発にも用いられているポピュラーなプログラミング言語です.
【目次】
- 標準仕様であるGPXファイルを読み込み可能.GPXファイルに含まれる位置情報の数は無制限.(使用するコンピュータスペックによる)
- 独自のJPEGファイルローダーにより,GPS情報の追加後もExif情報の維持が可能.デジタルカメラで撮影されたファイルのExif情報に含まれるメーカー固有情報(メーカーノート)についてもなるべく保護.(※完全な情報維持を保証するものではありません.詳細はJPEGファイルの取り扱いについてをご参照ください.)
- GPS情報の上書き有無,カメラ時刻のずれ,同一時刻と見なす範囲などを設定のうえマージ処理が可能.
- マージ処理前の自動バックアップ機能.処理失敗時の復元機能.
- シンプルなユーザインタフェース.
今後のバージョンアップも検討中です.
ほとんどの環境で動作しますが,念のため下記の通り動作環境を明記します.
- Java Runtime Environment Version.5 以上がインストールされている環境.
(※開発および動作検証はWindows XP上にて行っています.)
- Intel Pentium 4 と同等以上のプロセッサを推奨.
- 256Mバイト以上の物理メモリ.(512Mバイト以上を推奨)
JPEG GPX Merger自体のインストール作業は不要です.事前に,Java
Runtime Environmentがインストールされている必要があります.
- Java Runtime Environmentがインストールされていない場合は,以下のURLからインストールしてください.
Java.com (Java ソフトウェアの無料ダウンロード)
http://www.java.com/ja/
- JPEG GPX Mergerのプログラムファイルをダウンロードします.プログラムの実行時,設定ファイルなどのファイルを保存するので,あらかじめフォルダを作成してから,その中にダウンロードすることをオススメします.
- ダウンロードしたファイルをダブルクリックすると起動されます.
- 「GPXファイルの追加」を押下するとGPXファイルを指定するダイアログが表示されます.ファイルを指定すると,GPXファイル情報にリストアップされます.再度GPXファイルの追加を押下して,情報を追加することができます.
- 「GPXデータの消去」を押下すると,GPXファイル情報の内容が消去されます.
- 「画像フォルダ」を押下により,処理対象となるJPEGファイルの入っているフォルダを指定します.あらかじめ「サブディレクトリも対象」をチェックしておくと,サブディレクトリ内のファイルも対象となります.
- メニューより[ツール]−[設定]にて,次の項目が設定できます.(Ver.1.1.1以降の機能)
- カメラ時刻のずれ
- 同一時刻と見なす範囲
- GPS情報(GPSタグ)の上書き
- バックアップファイルを残すか否か(Ver.1.4.1以降)
- 「GPS情報をJPEGファイルにマージ開始」ボタンを押下すると,マージ処理が開始されます.マージ処理は次の条件にて行われます.
- JPEGファイルの撮影日時について“同一時刻と見なす範囲”で指定されたGPX情報を選択する.
- 選択されたGPX情報の中で,撮影日時に最も近いものをJPEGファイルへマージする.
- 画像ファイルに撮影時情報がない場合は処理対象になりません.
- 最近のデジカメ機種ではGPS-IFDがあるけれども位置情報がない場合,設定画面の「GPS情報(GPSタグ)の上書き」でチェックを入れないと処理対象になりません.
- Exif情報としての使用ソフトウェア名は“Jpeg
GPX Merger Version x.x.x”となります.すでに情報がある場合は上書きされます.ファイル変更日時は変更されません.
- 実行時ディレクトリ(プログラムファイルの保管場所)には,stdout.logとerrors.logといファイルが生成されます.通常使用しません.
- 設定情報は,実行時ディレクトリ(プログラムファイルの保管場所)にjgm.cfgというファイルで保存されます.初めて起動するときや削除されていたりする場合は,次の既定値で作成されます.
- カメラ時刻のずれ:0秒
- 同一時刻と見なす範囲:120秒
- GPS情報(GPSタグ)の上書き:チェックなし(上書きしない)
- マージ処理のあとにバックアップを残す:チェックあり(バックアップを残す)
- ファイルバックアップ時のバックアップファイル名は,元のファイル名+“.bak”です.例えばDSC00001.JPGの場合は,DSC00001.JPG.bakとなります.同名のバックアップファイルがすでに存在している場合,DSC00001.JPG.(1).bakのように連番となります.(1.3.x以前のバージョンでは,同名のバックアップファイルがすでに存在していると処理に失敗します.)
- GPXファイルの仕様に基づき,GPS情報の日時はISO 8601形式に準拠します.Ver.1.4.1からはミリ秒表記されている場合も読込可能ですが,コンマ「,」でミリ秒以下を表現しているファイルでは失敗します.なお,ミリ秒以下の情報は無視されます.
- マージ処理に失敗したときバックアップから復元するかどうかを尋ねるダイアログが出ますが,2回目以降からは強制的に復元する場合がります.(JOptionPanelを使っているのですが,なぜか2回目のshowConfirmDialogからダイアログが表示されないんです.)
- GPXファイルはあまり厳密にスキーマ分析を行っていません.Ver.1.2.0以前は“Waypoints”のみに対応しています.
- GPXファイルの座標情報に日時が含まれていない場合は読み込まれません.日時は実行環境のロケール時刻で処理されます.例えば,GPXファイル内の日時がUTC標準時で記録されている場合,タイムゾーンが日本になっている場合は+9時間後の時間で処理されます.もしこれが不都合な場合は,設定画面の「カメラ時刻のずれ」にて「-32400」を指定してください.
- リコー製デジタルカメラのファイルで撮影日時の情報が失われる(Exif情報が壊れる)現象を確認しています.(Attention!! : There is a problem that the exif data in a file of Ricoh digital cameras is broken after merging.)
JPEGファイルのExif情報の安全性については,全てのデジタルカメラにて保証するものではありません.特に,メーカーノートに記述された情報についてはメーカーごとに仕様が異なりますし,その仕様自体も非公開です.
少々技術的な話になりますが,本プログラムでは,そのようなデータをなるべく維持できるように,メーカノートの記録位置が元のファイルと同じになるように記録します.具体的には,EXIF-IFDにおいて最初のエントリとしてメーカノート情報(Tag:0x927C)を記録します.そして,メーカノートのデータ本体の位置を調整するために(元ファイルと同じ位置になるように),EXIF-IFDの“Offset
to next IFD”の後ろに非参照データとなる0x00を必要なバイト数記録します.以後,メーカノートのデータ本体として元ファイルのデータを無加工で記録し,その後にExif-IFD内のほかのエントリの(5バイト以上の)データ本体を記録しています.
当方では,次のデジタルカメラで撮影されたJPEG画像ファイルについて動作検証をしています.
※リコー製デジタルカメラのファイルで撮影日時の情報が失われる(Exif情報が壊れる)現象を確認しています.(Attention!! : There is a problem that the exif data in a file of Ricoh digital cameras is broken after merging.)
- SONY α100(ファーム1.04)
- SONY α300(製品情報ページのサンプル画像を使用)
- SONY α700(製品情報ページのサンプル画像を使用)
- CANON EOS Kiss X2(サンプル画像を使用)
- CANON EOS 50D(製品情報ページのサンプル画像を使用)
- CANON EOS 1Ds Mark III (製品情報ページのサンプル画像を使用)
- CANON EOS 5D(製品情報ページのサンプル画像を使用)
- CANON EOS 40D(製品情報ページのサンプル画像を使用)
- CANON IXY DIGITAL 900IS(ファーム1.00)
- NIKON D80(製品情報ページのサンプル画像を使用,マージ後ニコン独自のサムネイルデータは破損)
- NIKON D90(サンプル画像を使用.マージ後ニコン独自のサムネイルデータは破損)
- NIKON D700(製品情報ページのサンプル画像を使用)
- PENTAX K10D(製品情報ページのサンプル画像を使用)
- PENTAX K20D(製品情報ページのサンプル画像を使用)
- PENTAX K200D(製品情報ページのサンプル画像を使用)
- Fujifilm FinePix40i
- NTT DoCoMo SH505is
- NTT DoCoMo N903i
α100とα700が生成する画像には,もともとEOIマーカが2つあるなど非標準な部分が少なくないようです.メーカノート内にEXif情報外を参照するポインタがあったりします.前者については,SOSマーカー以降を元のデータをそのまま出力するように対応していますが,後者については未対応ですのでデータを読み出せない可能性があります.
動作検証として,次のソフトウェアをWindows上にて使っています.
特に,かみさかさんのJpeg Analyzerとryouto.jpさんのF6
Exifには大変お世話になりました.この場を借りてお礼申しあげます.
- Jpeg GPX Merger(以下本プログラムと記す)の著作権は,全てagentier.comを管理するKozo
Mizutani(以下開発者と記す)が所有します.(Title to Jepg GPX Merger (It's defined as "Program") rights is retained by Kozo Mizutani (It's defined as "Author").)
- 本プログラムの全部または一部を開発者に無断で転載,複製することを禁じます.(You may not reproduce Program or a part of Program without the permission of Author.)
- 本プログラムをリバースエンジニアリングするなどの方法で変更して,変更されたものを使用したり配布することを禁じます.(You may not modify, decompile, or reverse engineer Program. )
- 本プログラムにより生じた直接的および間接的損害に対する責任を,開発者は一切負わないものとします.(In no event shall the copyright holder be liable for any indirect, incidental, or consequential damages by Program.)
- 本プログラムに関する不具合の報告および改善に関わる義務を開発者は負いません.(Author is not obliged to report or improve the defects of Program. )
- 法律に反する行為を伴って本プログラムを使用することを禁じます.(You may not use the program with actions contrary to laws.)
- 本使用許諾条件は,開発者の判断により,法的に正当な理由を伴っていつでも改変できるものとします(Based on legitimate legal reasons, Author can change this license agreements at any time.).
|