EXIF (Exchangeable Image File Format) ist der Standard zur Angabe der Bild- und Tonformate, die hauptsächlich von Digitalkameras und Scannern verwendet werden. EXIF-Daten enthalten die Tagging- und Metadateninformationen über die aufgenommene Bilddatei. Metadaten können Informationen wie Kameramarke, Modell, Verschlusszeit, Datum und Uhrzeit, Blende, Belichtungszeit, X-Auflösung, Y-Auflösung enthalten. etc.

Wenn Sie EXIF-Daten Ihrer Bilder programmgesteuert verwalten, extrahieren, aktualisieren oder entfernen möchten, ist dieser Artikel genau das Richtige für Sie. Dieser Artikel behandelt die folgenden Möglichkeiten zur Bearbeitung von EXIF-Daten in Java:

Bibliothek zur Manipulation von Java-Metadaten

Metadaten-Java-API von GroupDocs

GroupDocs.Metadata for Java ist eine benutzerfreundliche Java-API zur Verwaltung von Metadaten. Es kann nicht nur Metadaten aus Bildern wie JPG, PNG oder WebP extrahieren, sondern mit verschiedenen Optionen auch Metadaten zu Bildern und anderen Dokumenten hinzufügen, bearbeiten, aktualisieren und entfernen.

Ich verwende diese API in diesem Artikel, stellen Sie also sicher, dass Sie sie herunterladen oder in Ihre Maven-basierten Anwendungen integrieren, indem Sie einfach die folgenden Konfigurationen zur pom.xml hinzufügen.

Repository & Abhängigkeit

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

EXIF-Daten aus Bildern in Java extrahieren - Metadaten-Viewer

Sie können die EXIF-Dateneigenschaften lesen, indem Sie einfachen Schritten folgen. Beginnen wir mit der Extraktion von EXIF-Daten aus diesem Bild des Eiffelturms. Ich habe eine JPG-Datei als Beispielbild ausgewählt, Sie können jede Ihrer Dateien verwenden, egal ob PNG, WebP, BMP, GIF oder TIFF.

Eiffelturmbild für EXIF-Daten
  • Laden Sie die Bildquelldatei mit EXIF-Dateninformationen mit dem Klassenkonstruktor Metadaten.
  • Rufen Sie sein Root-Paket ab, indem Sie die Methode getRootPackage() aufrufen.
  • Rufen Sie aus dem Root-Paket sein EXIF-Paket ab, indem Sie die Methode getExifPackage() aufrufen.
  • Sobald Sie das EXIF-Paket haben, können Sie Bild-EXIF-Eigenschaften wie Hersteller, Modell, Breite, Länge, Datum-Uhrzeit usw. wie gezeigt abrufen im folgenden Java-Codebeispiel.
// 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());					
	} 
}

Hier sind die EXIF-Informationen, die Sie als Ergebnis des obigen Codes erhalten.

Make : NIKON CORPORATION
Model : NIKON D3000
Width : 640
Length : 424
DateTime : 2014:08:09 10:35:13

Für weitere Paketinformationen IFD (Image File Directory) und GPS (Global Positioning System) müssen Sie nur die entsprechenden Methoden des EXIF-Pakets aufrufen, dh getExifIfdPackage() oder getGpsPackage(). Aus diesen Paketen können Sie weitere Informationen extrahieren, wie z.

  • Bildaufnahmegerät Seriennummer
  • Kamera Besitzername
  • Benutzerkommentare
  • Höhe
  • Breite
  • Längengrad
  • etc.

Hier ist der Code, den Sie in Ihre obige Methode einfügen können, um EXIF-Daten zusammen mit IFD- und GPS-Informationen anzuzeigen.

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

Lesen Sie alle EXIF-Tags von Bildern mit Java

Wenn Sie alle EXIF-Eigenschaften eines Bildes oder einer Datei anzeigen oder extrahieren möchten, können Sie dies in ähnlichen Schritten wie in den obigen Beispielen tun:

  • Laden Sie die Datei einfach mit dem Metadata-Konstruktor.
  • Rufen Sie das EXIF-Stammpaket ab, indem Sie die Methode getRootPackage() aufrufen.
  • Rufen Sie das EXIF-Paket ab, indem Sie die Methode getExifPackage() aufrufen.
  • Durchlaufen Sie das EXIF-Paket, um die gewünschten Name-Wert-Paare zu erhalten.
  • Holen Sie sich auf ähnliche Weise die IFD- und GPS-Pakete und zeigen Sie deren Schlüssel und Werte an.
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()));
		}
	}
}

Aktualisieren Sie die EXIF-Eigenschaften in Java

Sie können sogar die vorhandenen EXIF-Daten eines beliebigen Bildes oder Dokuments einfach ändern. Schritte sind einfach:

EXIF-Paket aktualisieren

  • Holen Sie sich das EXIF-Paket, indem Sie die Methode getExifPackage() aufrufen.
  • Verwenden Sie die Setter-Methoden wie;
  • Ebenso können Sie die Werte für Künstler, Marke, Modell, Software, Bildbreite und -höhe, Datum, Uhrzeit usw. festlegen.

EXIF-IFD-Paket aktualisieren

Genau wie beim Aktualisieren des EXIF-Pakets können Sie die Eigenschaften von EXIF-IFD- und GPS-Paketen aktualisieren. Bitte besuchen Sie die Klasse ExifIfdPackage oder ExifGpsPackage, um zu erfahren, wie viel Sie für Ihre wertvollen Bilder und Dokumente anpassen können.

// 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");
}

Entfernen Sie EXIF-Metadaten von Bildern in Java

Dies ist sehr einfach, wenn Sie das EXIF-Paket aus einer beliebigen Datei entfernen möchten, setzen Sie einfach das EXIF-Paket auf null, indem Sie setExifPackage(null) des Root-Pakets aufrufen.

// 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");
}

Unterstützte Bilder und andere Formate

Hier sind die derzeit unterstützten Dateiformate von GroupDocs.Metadata. Die aktualisierten Informationen finden Sie jederzeit in der Dokumentation.

Erfahren Sie mehr über GroupDocs.Metadata

Reden wir weiter @ Kostenloses Support-Forum.

Verwandter Artikel