Domanda

Io sono interessante in analisi il risultato exiftool con un'API Java o qualcosa del genere.

Sono stato alla ricerca, ma non ho trovato alcun esempio. Ad esempio, come potrei ottenere questi risultati nel mio progetto java?

  

ExifTool Numero di versione: 8.22

     

Nome file:   ExifTool.jpg

     

Directory: t / immagini File

     

Dimensione: 24 kB file di modifica Data / Ora

Ecc .. Sto cercando un 'come' o qualcosa del genere.

È stato utile?

Soluzione

ExifTool (per Java) è stato progettato di essere un'astrazione semplice da usare e robusto Java di ExifTool di Phil Harvey. Ho appena fatto la prima pubblica rilasciare la scorsa settimana dopo l'incubazione del progetto sotto l'egida del progetto imgscalr per un po '.

Il progetto è sotto la licenza commerciale-friendly Apache 2.

Il mio obiettivo per la biblioteca non è solo di astrarre il codice di esecuzione processo esterno dal chiamante (come la maggior parte degli altri livelli di astrazione sono apparente di fare), ma in realtà per la progettazione di un involucro così forte integrazione e resistente (lo farò chiarire cosa intendo qui in seguito), che si trattano le istanze della classe ExifTool esattamente come si farebbe se ExifTool stesso è stato scritto in Java.

In questa versione iniziale ho supporta la lettura dei dati dei tag (aggiungerà la scrittura in un rilascio futuro) ed è semplice come questo:

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));

Utilizzando ExifTool nella nuova modalità "daemon" (-stay_open linea cmd True) è anche supportato e girando sul sostegno è facile come creare l'istanza ExifTool in questo modo:

ExifTool tool = new ExifTool(Feature.STAY_OPEN);

La documentazione sul come utilizzare l'ExifTool classe è ampia, che copre tutto, dalla progettazione alle prestazioni di sicurezza thread.

Oltre a fare uso di ExifTool semplice da Java, la classe si avvale di una notevole quantità di precauzioni per ridurre al minimo i problemi di esecuzione, nonché la cattura e riferire qualsiasi e tutti gli errori che possono sorgere in modi ben documentati (invece di lasciare che sorpresa correttamente eccezioni a bolle su da classi core Java).

ero così pedanti con la gestione di questa eccezione e il recupero di errore perché la classe è progettato per consentire di utilizzare ExifTool in un ambiente ad alta disponibilità come un'applicazione web occupato. Io non voglio solo avvolgere semplice elaborare gli oggetti poi buttare le mani in aria se qualcosa è esploso. io sapevo (e chiunque altro utilizzando la classe) avrebbe bisogno di un API ben progettato per consentire un facile recupero di errore.

Ad esempio, si tenta di utilizzare ExifTool in modalità demone farà sì che la classe effettivamente controllare il sottostante installazione di ExifTool sostegno per tale funzione e lanciare un UnsupportedFeatureException con raccomandazioni su come aggirare il problema, se non è supportato.

Oltre al pre-condizione di controllo, al fine di garantire che l'utilizzo della classe (cioè in modalità demone) non fuoriesca processi nativi OS nonché Input / OutputStreams usato per comunicare con loro, la classe fornisce un auto- thread di pulizia che dopo un specificato intervallo di inattività (default è 10 minuti) arresta il processo esterno in modo pulito e flussi di lettura / scrittura, rendendo il caso al minimo di ExifTool leggero e facile da mantenere in circolazione per il riutilizzo.

Tutte le risorse sono reinizializzata sul prossimo chiamata alla classe di analizzare più metadati in modo non c'è bisogno di buttare fuori e ri-creare nuove istanze. Anche il filo di pulitura eseguito solo dopo lunghi periodi di inattività, non su un programma impostato. È possibile impostare l'intervallo per tutto quello che vuoi o spegnere il thread di pulitura completamente e gestire la pulizia da soli (basta chiamare close ()).

Questi disegni sono tutti parte del mio obiettivo finale di rendere l'integrazione ExifTool in un'applicazione Java senza soluzione di continuità, performante e facile.

È possibile controllare la href="http://www.thebuzzmedia.com/software/exiftool-enhanced-java-integration-for-exiftool/" rel="noreferrer"> pagina del progetto principale per maggiori informazioni sul progetto, l'utilizzo, fonte, link per il download, ecc oppure si può saltare direttamente al GitHub e guardare attraverso il codice, se si preferisce.

Altri suggerimenti

Non so ExifTool, ma ho usato in precedenza MediaUtil a leggere e scrivere exif tag in Java (l'ho usato per la rotazione automatica immagine jpeg)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top