私は、exiftool の結果を Java API などで解析することに興味があります。
調べてみましたが、例がありませんでした。たとえば、Java プロジェクトでこれらの結果を取得するにはどうすればよいでしょうか?
ExifTool バージョン番号: 8.22
ファイル名:ExifTool.jpg
ディレクトリ : t/images ファイル
サイズ : 24 kB ファイル変更日時
など..「ハウツー」などを探しています。
ExifTool (Java 用) は、Phil Harvey の ExifTool の使いやすく堅牢な Java 抽象化として設計されています。imgscar プロジェクトの傘下でプロジェクトをしばらくインキュベートした後、先週、最初の公開リリースを行いました。
このプロジェクトは、商用に適した Apache 2 ライセンスの下にあります。
ライブラリに対する私の目標は、呼び出し元から外部プロセス実行コードを抽象化することだけではありません (他のほとんどの抽象化レイヤーがそうしているように見えます) が、実際にラッパーを非常に緊密に統合し、回復力のあるように設計することです (私が何をしたかを明確にします)。 ExifTool 自体が Java で記述されている場合とまったく同じように、ExifTool クラスのインスタンスを扱うことを意味します。
この最初のリリースでは、タグ データの読み取りをサポートしています (将来のリリースでは書き込みを追加します)。これは次のように簡単です。
File image = // path to some image
ExifTool tool = new ExifTool();
Map<Tag, String> valueMap =
tool.getImageMeta(image, Tag.GPS_LATITUDE, Tag.GPS_LONGITUDE);
System.out.println("Lat: " + valueMap.get(Tag.GPS_LATITUDE) +
"\tLong: " + valueMap.get(Tag.GPS_LONGITUDE));
ExifTool を新しい「デーモン モード」 (-stay_open True コマンド ライン) で使用することもサポートされており、そのサポートをオンにするのは、次のように ExifTool インスタンスを作成するのと同じくらい簡単です。
ExifTool tool = new ExifTool(Feature.STAY_OPEN);
ExifTool クラスの使用方法に関するドキュメントは広範で、設計からパフォーマンス、スレッド セーフまですべてをカバーしています。
ExifTool を Java から簡単に使用できるようにすることに加えて、このクラスでは、実行時の問題を最小限に抑え、十分に文書化された方法で発生する可能性のあるすべてのエラーを正しくキャッチして報告するために、かなりの量の予防措置を採用しています (突然の例外が発生するのではなく)。コア Java クラスから)。
クラスは、忙しい Web アプリケーションのような高可用性環境で ExifTool を利用できるように設計されているため、私はこの例外処理とエラー回復に非常に神経質になりました。単純な Process オブジェクトをラップして、何かが爆発した場合に手を空中に投げ上げたいだけではありませんでした。私自身 (およびこのクラスを使用している他のユーザー) は、簡単にエラーを回復できるように適切に設計された API が必要であることを知っていました。
たとえば、ExifTool をデーモン モードで使用しようとすると、クラスは ExifTool の基になるインストールを実際にチェックして、その機能がサポートされているかどうかを確認し、UnsupportedFeatureException をスローして、サポートされていない場合に問題を回避する方法を推奨します。
事前条件チェックに加えて、(つまりデーモン モードでの) クラスの使用がネイティブ OS プロセスとそれらとの通信に使用される入力/出力ストリームをリークしないようにするために、クラスは自動クリーンアップ スレッドを提供します。指定された非アクティブ期間(デフォルトは 10 分) が経過すると、外部プロセスと読み取り/書き込みストリームが完全にシャットダウンされ、ExifTool のアイドル状態のインスタンスが軽量になり、再利用のために維持しやすくなります。
すべてのリソースは、クラスへの次の呼び出しで再初期化され、より多くのメタデータを解析するため、破棄して新しいインスタンスを再作成する必要はありません。また、クリーンアップ スレッドは、設定されたスケジュールではなく、長期間非アクティブになった後にのみ実行されます。間隔を任意に設定するか、クリーンアップ スレッドを完全にシャット オフしてクリーンアップを自分で管理できます (close() を呼び出すだけです)。
これらの設計はすべて、ExifTool を Java アプリケーションにシームレスに、効率的に、簡単に統合するという私の究極の目標の一部です。
プロジェクト、使用法、ソース、ダウンロード リンクなどの詳細については、メイン プロジェクト ページを確認してください。必要に応じて、 GitHubに直接ジャンプしてコードを確認することもできます。
ExifTool フォーラムで応答を確認します。
http://u88.n24.queensu.ca/exiftool/forum/index.php/topic,2697.0.html
exiftoolはわかりませんが、以前はMediaUtilを使用してJavaでexifタグを読み書きしていました(自動jpeg画像回転に使用しました)