EXIF (Exchangeable Image File Format) est la norme pour spécifier les formats d’image et de son principalement utilisés par les appareils photo numériques et les scanners. Les données EXIF incluent les informations de marquage et de métadonnées sur le fichier image capturé. Les métadonnées peuvent contenir des informations telles que la marque de l’appareil photo, le modèle, la vitesse d’obturation, la date et l’heure, l’ouverture, le temps d’exposition, la résolution X, la résolution Y. etc.
Si vous souhaitez gérer, extraire, mettre à jour ou supprimer les données EXIF de vos images par programmation, cet article est pour vous. Cet article couvrira les manières suivantes de manipuler les données EXIF en Java :
- Extraire les données EXIF - Visualiseur de données EXIF
- Extraire toutes les balises EXIF des images
- Mettre à jour les propriétés EXIF
- Supprimer les métadonnées EXIF
Bibliothèque de manipulation de métadonnées Java
GroupDocs.Metadata for Java est une API Java de gestion des métadonnées facile à utiliser. Il a la capacité non seulement d’extraire des métadonnées d’images telles que JPG, PNG ou WebP, mais également d’ajouter, de modifier, de mettre à jour et de supprimer des métadonnées d’images et d’autres documents avec différentes options.
J’utilise cette API dans cet article, alors assurez-vous de télécharger ou de l’intégrer dans vos applications basées sur Maven en ajoutant simplement les configurations suivantes au fichier pom.xml.
Référentiel et dépendance
<repository>
<id>GroupDocsJavaAPI</id>
<name>GroupDocs Java API</name>
<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-metadata</artifactId>
<version>20.5</version>
<classifier>javadoc</classifier>
</dependency>
Extraire des données EXIF à partir d’images en Java - Visualiseur de métadonnées
Vous pouvez lire les propriétés des données EXIF en suivant des étapes simples. Commençons par l’extraction des données EXIF de cette photo de la Tour Eiffel. J’ai sélectionné un fichier JPG comme exemple d’image, vous pouvez utiliser n’importe lequel de vos fichiers, qu’il s’agisse d’un PNG, WebP, BMP, GIF ou TIFF.
- Chargez le fichier source de l’image contenant les informations de données EXIF à l’aide du constructeur de classe Metadata.
- Obtenez son paquet racine en appelant la méthode getRootPackage().
- À partir du package racine, obtenez son package EXIF en appelant la méthode getExifPackage().
- Une fois que vous avez le package EXIF, vous pouvez obtenir des propriétés EXIF d’image telles que Make, Model, Width, Length, Date-Time, etc., comme indiqué dans l’exemple de code Java ci-dessous.
// Extract EXIF Data Package Information from image in Java
try (Metadata metadata = new Metadata("eiffel-tower.jpg")) {
IExif root = (IExif) metadata.getRootPackage();
if (root.getExifPackage() != null) {
// Extract EXIF Package
ExifPackage exifPackage = root.getExifPackage();
System.out.println("Make : " + exifPackage.getMake());
System.out.println("Model : " + exifPackage.getModel());
System.out.println("Width : " + exifPackage.getImageWidth());
System.out.println("Length : " + exifPackage.getImageLength());
System.out.println("DateTime : " + exifPackage.getDateTime());
}
}
Voici les informations EXIF que vous obtiendrez à la suite du code ci-dessus.
Make : NIKON CORPORATION
Model : NIKON D3000
Width : 640
Length : 424
DateTime : 2014:08:09 10:35:13
Pour plus d’informations sur les packages IFD (Image File Directory) et GPS (Global Positioning System), il vous suffit d’appeler les méthodes respectives du EXIF package, c’est-à-dire getExifIfdPackage() ou getGpsPackage(). À partir de ces packages, vous pouvez extraire plus d’informations telles que;
- Appareil de capture d’image numéro de série
- Caméra Nom du propriétaire
- Commentaires des utilisateurs
- Altitude
- Latitude
- Longitude
- etc.
Voici le code que vous pouvez ajouter dans votre méthode ci-dessus pour afficher les données EXIF avec les informations IFD et GPS.
// EXIF IFD Package
ExifIfdPackage exifIfdPackage = exifPackage.getExifIfdPackage();
System.out.println("BodySerialNumber : " + exifIfdPackage.getBodySerialNumber());
System.out.println("CameraOwnerName : " + exifIfdPackage.getCameraOwnerName());
System.out.println("UserComment : " + exifIfdPackage.getUserComment());
// EXIF GPS Information Package
ExifGpsPackage exifGpsPackage = exifPackage.getGpsPackage();
System.out.println("getAltitude : " + exifGpsPackage.getAltitude());
System.out.println("Latitude Ref : " + exifGpsPackage.getLatitudeRef());
System.out.println("LongitudeRef : " + exifGpsPackage.getLongitudeRef());
Lire toutes les balises EXIF des images à l’aide de Java
Si vous souhaitez afficher ou extraire toutes les propriétés EXIF d’une image ou d’un fichier, vous pouvez le faire en suivant des étapes similaires aux exemples ci-dessus :
- Chargez simplement le fichier avec le constructeur Metadata.
- Obtenez le package racine EXIF en appelant la méthode getRootPackage().
- Obtenez le package EXIF en appelant la méthode getExifPackage().
- Parcourez le package EXIF pour obtenir les paires nom-valeur souhaitées.
- De même, récupérez les packages IFD et GPS et affichez ses clés et ses valeurs.
try (Metadata metadata = new Metadata("eiffel-tower.jpg")) {
IExif root = (IExif) metadata.getRootPackage();
if (root.getExifPackage() != null) {
String pattern = "%s = %s";
// Reading all EXIF tags.
for (TiffTag tag : root.getExifPackage().toList()) {
System.out.println(String.format(pattern, tag.getName(), tag.getValue()));
}
// Extract all EXIF IFD tags.
for (TiffTag tag : root.getExifPackage().getExifIfdPackage().toList()) {
System.out.println(String.format(pattern, tag.getName(), tag.getValue()));
}
// Extract all EXIF GPS tags
for (TiffTag tag : root.getExifPackage().getGpsPackage().toList()) {
System.out.println(String.format(pattern, tag.getName(), tag.getValue()));
}
}
}
Mettre à jour les propriétés EXIF en Java
Vous pouvez même modifier facilement les données EXIF existantes de n’importe quelle image ou de n’importe quel document. Les étapes sont simples :
Mettre à jour le package EXIF
- Obtenez le package EXIF en appelant la méthode getExifPackage().
- Utilisez les méthodes de setter comme;
- setCopyright() - pour définir les informations de copyright mises à jour.
- setImageDescription() - pour définir la description de l’image.
- De même, vous pouvez définir les valeurs pour l’artiste, la marque, le modèle, le logiciel, la largeur et la hauteur de l’image, la date, l’heure, etc.
Mettre à jour le package EXIF IFD
Tout comme la mise à jour du package EXIF, vous pouvez mettre à jour les propriétés des packages EXIF IFD et GPS. Veuillez visiter la classe ExifIfdPackage ou ExifGpsPackage pour savoir combien vous pouvez personnaliser pour vos images et documents précieux.
// Update/Set new values in EXIF Data (EXIF Package and EXIF IFD Package).
try (Metadata metadata = new Metadata("eiffel-tower.jpg")) {
IExif root = (IExif) metadata.getRootPackage();
// Set the EXIF package if it's missing
if (root.getExifPackage() == null) {
root.setExifPackage(new ExifPackage());
}
ExifPackage exifPackage = root.getExifPackage();
// Setting the desired values in EXIF Package and EXIF IFD Package.
exifPackage.setCopyright("Copyright (C) 2011-2020 GroupDocs. All Rights Reserved.");
exifPackage.setImageDescription("Eiffel Tower for EXIF");
exifPackage.setSoftware("GroupDocs.Metadata");
exifPackage.getExifIfdPackage().setBodySerialNumber("GD-2020");
exifPackage.getExifIfdPackage().setCameraOwnerName("GroupDocs");
exifPackage.getExifIfdPackage().setUserComment("Nice image captured in 2014");
metadata.save("eiffel-tower-updated.jpg");
}
Supprimer les métadonnées EXIF des images en Java
C’est très simple si vous souhaitez supprimer le package EXIF de n’importe quel fichier, définissez simplement son package EXIF sur null en appelant setExifPackage(null) du package racine.
// Removing the EXIF data from an image.
try (Metadata metadata = new Metadata("eiffel-tower.jpg")) {
IExif root = (IExif) metadata.getRootPackage();
root.setExifPackage(null);
metadata.save("eiffel-tower-no-exif.jpg");
}
Images et autres formats pris en charge
Voici les formats de fichiers actuellement pris en charge par GroupDocs.Metadata. Vous pouvez toujours visiter la documentation pour les informations mises à jour.
Type de document | Formats de fichier |
---|---|
Images | BMP, GIF, JPG, JPEG, JPE, JP2, PNG, DJVU, DWG, DXF, WebP, TIFF, PSD, EMF, WMF |
Audio & Vidéo | MP3, WAV, AVI, MOV/QT, FLV, ASF, DICOM |
En savoir plus sur GroupDocs.Metadata
- Documents
- Exemples de code source. Java | .NET
- GroupDocs.Metadata - La solution de gestion des métadonnées
Parlons plus @ Forum d’assistance gratuit.