IPTCメタデータをJPEGおよびTIFFに読み書きするためのオープンソースJavaライブラリを知っている人はいますか? 現在、Apache Sanselan を使用しています。残念ながら、IPTC の読み取りのみが可能で、書き込みはできません (http://commons.apache.org/sanselan/formatsupport.html )。
どうぞよろしくお願いいたします。
デニス。
6 に答える
IIM4Jを見てください。IIMWriter
IPTC IIM タグを (jpeg) 画像に書き込むために使用します。
これはかなり古い質問のようですが、以下は役立つ情報です。
EXIF、IPTC などのメタデータの読み取りは、Apache Commons Imaging (以前の Sanselan) または Metadata Extractor (draw noaks による) を使用して行うことができます。
メタデータの書き込みは、次のクラスを使用して Apache Commons Imaging を使用して実行できます。
EXIF - ExifRewriter ( http://commons.apache.org/proper/commons-imaging/apidocs/org/apache/commons/imaging/formats/jpeg/exif/ExifRewriter.html )
IPTC - JpegIptcRewriter ( http://commons.apache.org/proper/commons-imaging/apidocs/org/apache/commons/imaging/formats/jpeg/iptc/JpegIptcRewriter.html )
XMP - JpegXmpRewriter ( http://commons.apache.org/proper/commons-imaging/apidocs/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpRewriter.html )
Apache Commons Imaging (以前のsanselan)は、次のリリースの svn リポジトリ コードに IPTC メタデータを書き込むためのサポートを追加しました。これは、svn リポジトリからチェックアウトした最新のトランク コードでそうであることを確認しました。コードは安定しているように見えるので、リリースがそれほど遠くないことを願っています. 私のプロジェクトでは、これで十分です。
私は過去に自分自身を調べましたが、見つかりませんでした。http://sourceforge.net/projects/image-tagger/などのオープン ソース プロジェクトを調べて、その方法を確認することをお勧めします。
メタデータを読み取るには、「 metadata-extractor 」を参照する必要があると思います。これは、画像ファイルからメタデータを読み取るための Java ライブラリを開発するオープン ソース プロジェクト (Apache 2.0 ライセンス) です。
現時点では、このプロジェクトは次の画像のメタデータにアクセスできます。
- エクシフ
- IPTC
- XMP
- JFIF / JFXX
- ICC プロファイル
- Photoshop フィールド
「metadata-extractor 」はgoogle codeでホストされています。
2.4.0 バージョンの簡単なコード例を次に示します。
public void example() throws Exception {
File jpegFile = new File("yourJpgFile.jpg");
Metadata metadata = ImageMetadataReader.readMetadata(jpegFile);
Iterator directory = metadata.getDirectoryIterator();
while (directory.hasNext()) {
Object tag = directory.next();
if (tag instanceof ExifDirectory) {
Iterator tags = ((ExifDirectory) tag).getTagIterator();
while (tags.hasNext()) {
System.out.println("EXIF: "+tags.next().toString());
}
} else if (tag instanceof IptcDirectory) {
Iterator tags = ((IptcDirectory) tag).getTagIterator();
while (tags.hasNext()) {
System.out.println("IPTC: "+tags.next().toString());
}
} else if (tag instanceof JpegDirectory) {
Iterator tags = ((JpegDirectory) tag).getTagIterator();
while (tags.hasNext()) {
System.out.println("JPEG: "+tags.next().toString());
}
} else {
System.err.println(tag.getClass());
}
}
}