Qualcuno conosce qualche libreria Java opensource per la lettura e scrittura di metadati IPTC in JPEG e TIFF? Ora sto usando Apache Sanselan. Sfortunatamente, può solo leggere IPTC, non scrivere (http://commons.apache.org/sanselan/formatsupport.html).
Sarà molto grato per la vostra assistenza.
Denis.Libreria Java per la lettura e la scrittura di metadati IPTC in JPEG e TIFF
risposta
Mi sono guardato in passato ma non l'ho trovato. Suggerirei di guardare a un progetto open source come http://sourceforge.net/projects/image-tagger/ e vedere come lo fanno.
Come capisci, Image-tagger usa ExifTool, che è scritto in Perl e ha bisogno di installare Perl, giusto? Se sì, allora non è adatto nel mio caso, poiché la mia applicazione dovrebbe fare affidamento solo su JRE installato. – Storm
Per leggere i metadati penso che dovresti dare un'occhiata a "metadata-extractor" - un progetto Open Source (licenza Apache 2.0) che sviluppa una libreria Java per leggere i metadati dai file di immagine.
Al momento, questo progetto può ottenere l'accesso alle seguenti metadati delle immagini:
- Exif
- IPTC
- XMP
- JFIF/JFXX
- Profili ICC
- Photoshop campi
"metadata-extractor" è ospitato allo google code.
Ecco un po 'di codice-esempio semplice per la versione 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());
}
}
}
Come ho detto, ho bisogno di una libreria per leggere e ** scrivere ** metadati. "Metadata-extractor" supporta solo la lettura. – Storm
Il Apache Commons Imaging (formerly sanselan) ha aggiunto il supporto per la scrittura di metadati IPTC nel codice repo SVN per la loro prossima versione. Ho verificato che questo è così nell'ultimo codice di tronco estratto da svn repo. Il codice sembra stabile, quindi spero che l'uscita non sia troppo lontana. Per il mio progetto questo è abbastanza buono.
In realtà ho usato questa libreria in un progetto e ha funzionato per me. È possibile trovare test in giro (come qui http://massapi.com/class/jp/JpegImageParser.html) – Duralumin
Questo sembra essere piuttosto una questione vecchia, ma in seguito è alcune informazioni utili:
lettura dei metadati quali EXIF, IPTC..etc può essere fatto utilizzando Apache Commons Imaging (precedentemente Sanselan) o metadati Extractor (da ha disegnato noaks).
scrittura dei metadati può essere fatto utilizzando Apache Commons Imaging utilizzando seguenti classi:
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)
C'è una nuova scelta [qui] (https://github.com/dragon66/icafe) - può leggere, scrivere IPTC, EXIF, ADOBE, ICCProfile, anteprima ecc. – dragon66