Biblioteca de Java para leer y escribir metadatos IPTC a JPEG y TIFF
(5)
Esta parece ser una pregunta bastante antigua, pero a continuación hay información útil:
La lectura de metadatos, como EXIF, IPTC, etc., se puede hacer utilizando Apache Commons Imaging (anteriormente Sanselan) o Metadata Extractor (por draw noaks).
la escritura de metadatos se puede hacer usando Apache Commons Imaging usando las siguientes clases:
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 )
Me he visto en el pasado pero no he encontrado uno. Sugeriría mirar un proyecto de código abierto como http://sourceforge.net/projects/image-tagger/ y ver cómo lo hacen.
Para leer metadatos, creo que debería echarle un vistazo a " metadata-extractor ", un proyecto de código abierto (licencia Apache 2.0) que desarrolla una biblioteca Java para leer metadatos de archivos de imagen.
En este momento, este proyecto puede obtener acceso a los siguientes metadatos de imágenes:
- Exif
- IPTC
- XMP
- JFIF / JFXX
- Perfiles ICC
- Campos de photoshop
El " metadata-extractor " está alojado en el código de Google .
Aquí hay un pequeño ejemplo de código sencillo para la versión 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());
}
}
}
Apache Commons Imaging (anteriormente sanselan) ha agregado soporte para escribir metadatos IPTC en el código svn repo para su próxima versión. He verificado que esto es así en el último código troncal desprotegido de svn repo. El código parece estable, así que espero que un lanzamiento no esté muy lejos. Para mi proyecto esto es suficiente.
Echa un vistazo a IIM4J . Use IIMWriter
para escribir etiquetas IPTC IIM en imágenes (jpeg).