Question

Je suis intéressant dans l'analyse du résultat exiftool avec un api java ou quelque chose comme ça.

J'ai fait des recherches, mais je ne trouve aucun exemple. Par exemple, comment pourrais-je obtenir ces résultats dans mon projet java?

  

ExifTool Numéro de version: 8,22

     

Nom du fichier:   ExifTool.jpg

     

Annuaire: t / Images Fichier

     

Taille: 24 kB Modification du fichier Date / Heure

Etc .. Je cherche « comment » ou quelque chose comme ça.

Était-ce utile?

La solution

ExifTool (pour Java) est conçu être simple à utiliser et robuste abstraction Java de ExifTool Phil Harvey. Je viens de faire le premier diffusion publique cette semaine après incubation du projet dans le cadre du projet imgscalr pendant un certain temps.

Le projet est sous la licence Apache 2 commercial convivial.

Mon objectif pour la bibliothèque est non seulement de faire abstraction le code d'exécution de processus externe de l'appelant (comme la plupart des autres couches d'abstraction sont en avoir l'air) mais réellement concevoir une enveloppe si étroitement l'intégration et résiliente (je préciser que je veux dire ici plus tard), que vous traitez des instances de votre classe ExifTool exactement comme vous le feriez si ExifTool lui-même a été écrit en Java.

Dans cette version initiale, je soutiens la lecture des données d'étiquette (ajoutera l'écriture dans un communiqué futur) et il est aussi simple que cela:

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

Utilisation ExifTool dans le nouveau mode « démon » (-stay_open ligne True cmd) est également pris en charge et en tournant sur son support est aussi facile que la création de votre instance ExifTool comme ceci:

ExifTool tool = new ExifTool(Feature.STAY_OPEN);

La documentation sur comment utiliser le ExifTool de classe est vaste, couvrant tout de la conception à la performance à la sécurité des threads.

En plus de l'utilisation de ExifTool simple à partir de Java, la classe emploie une quantité considérable de précautions pour minimiser les problèmes d'exécution, ainsi que la capture correctement et signaler tout et toutes les erreurs qui peuvent survenir de manière bien documentée (au lieu de laisser la surprise exceptions bouillonner de base des classes Java).

J'étais tellement pédant à cette exception la manipulation et la récupération d'erreur, car la classe est conçu pour vous permettre une utilisation optimale ExifTool dans un environnement à haute disponibilité comme une application web occupée. Je ne voulais pas juste pour envelopper processus simples objets puis jeter mes mains en l'air si quelque chose a explosé. Je me connaissais (et toute autre personne utilisant la classe) aurait besoin d'une API bien conçu pour permettre la récupération d'erreur facile.

Par exemple, essayer d'utiliser ExifTool en mode démon provoque la classe à fait vérifier le sous-jacent d'installation de ExifTool pour le support pour cette fonctionnalité et jeter un UnsupportedFeatureException avec des recommandations sur la façon de contourner le problème si elle n'est pas pris en charge.

En plus de la vérification condition préalable, afin d'assurer que l'utilisation de la classe (à savoir en mode démon) ne fuit pas les processus OS natifs, ainsi que l'entrée / OutputStreams utilisé pour communiquer avec eux, la classe fournit une auto fil de nettoyage que, après une spécifié intervalle d'inactivité (valeur par défaut est 10 minutes) arrête le processus externe proprement et les flux de lecture / écriture, ce qui rend l'instance de ralenti ExifTool léger et facile à garder autour d'une réutilisation.

Toutes les ressources seront réinitialisées lors du prochain appel à la classe pour analyser plus de métadonnées donc il n'y a pas besoin de jeter et recréer de nouvelles instances. De plus, le thread de nettoyage exécute seulement après de longues périodes d'inactivité, et non sur un horaire fixe. Vous pouvez définir l'intervalle de tout ce que vous voulez ou COUPEZ le fil de nettoyage complètement et gérer vous-même le nettoyage (il suffit d'appeler close ()).

Ces dessins font partie de mon objectif ultime de faire de l'intégration ExifTool dans une application Java transparente, et facile performant.

Vous pouvez consulter la page principale du projet pour plus d'informations sur le projet, l'utilisation, la source, les liens de téléchargement, etc. ou vous pouvez passer directement à GitHub et regardez par le code si vous préférez.

Autres conseils

Je ne sais pas exiftool, mais je l'ai déjà utilisé MediaUtil pour lire et écrire exif tags dans java (I utilisé pour la rotation automatique de l'image jpeg)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top