HEIC steht für High-Efficiency Image Container. Es ist die Dateierweiterung für die aufgenommenen Bilder für einige der Apple-Geräte. Es ist ein Container, der Bilder im hocheffizienten Bildformat HEIF enthalten kann. In diesem Artikel werden wir diskutieren, wie die EXIF- und XMP-Metadaten der HEIF/HEIC-Bilder in Java-Anwendungen extrahiert, aktualisiert und entfernt werden.

EXIF, das Exchangeable Image File Format, ist der Standard, der definiert, wie Metadateneigenschaften in den gängigsten Bild- und Audioformaten gespeichert werden. XMP ist ein XML-basierter Metadatenstandard, der beliebige Sätze von Metadateneigenschaften als Name/Wert-Paare speichern kann.

Die folgenden Themen werden unten behandelt

Java-API für EXIF- und XMP-Metadaten

GroupDocs.Metadata stellt die Metadaten-Manipulations-API für Ihre Java-Anwendungen bereit. Die API ermöglicht das Lesen, Aktualisieren, Hinzufügen, Bereinigen/Entfernen und Durchlaufen von Funktionen für viele Dateiformate. Es unterstützt verschiedene Metadatenstandards wie EXIF, IPTC und XMP. Textverarbeitungsdokumente, Tabellenkalkulationen, Präsentationen, E-Mail-Nachrichten, eBooks, Bilder, AutoCAD-Zeichnungen, Audio- und Videodateien, Torrents gehören zu den unterstützten Dokumentformaten. Genauer gesagt können Sie die Dokumentation für die vollständige Liste der unterstützten Dateiformate für die Bearbeitung von Metadaten besuchen.

Herunterladen und konfigurieren

Holen Sie sich die Metadatenbibliothek aus dem Abschnitt Downloads. Fügen Sie für Ihre Maven-basierte Java-Anwendung einfach die folgende pom.xml-Konfiguration hinzu. Danach können Sie die Beispiele dieses Artikels sowie die vielen weiteren Beispiele ausprobieren, die auf GitHub verfügbar sind. Einzelheiten finden Sie in der API-Referenz.

<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>21.4</version> 
</dependency>

Lesen Sie EXIF-Daten von HEIF / HEIC-Bildern in Java

Im Folgenden sind die Schritte zum Lesen und Extrahieren von EXIF-Daten von HEIC- und HEIF-Bildern aufgeführt.

  • Laden Sie das HEIF- oder HEIC-Bild mithilfe der Metadatenklasse.
  • Holen Sie sich das Root-Paket.
  • Rufen Sie das EXIF-Paket aus dem Root-Paket ab.
  • Vom EXIF-Paket aus können Sie die EXIF-Dateneigenschaften durchlaufen.
  • Darüber hinaus können Sie die IFD- (Image File Directory) und GPS-Informationen aus dem EXIF-Paket abrufen.

Der folgende Code zeigt, wie man EXIF-Daten, IFD- und GPS-Metadateninformationen des HEIC-Bildes mit Java erhält.

// Lesen Sie EXIF-, EXIF IFD-, EXIF GPS-Pakete von HEIF / HEIC-Bildern in Java
Metadata metadata = new Metadata("image.heic");
IExif root = (IExif) metadata.getRootPackage();
if (root.getExifPackage() != null) {
    String pattern = "%s : %s";
    // Holen Sie sich EXIF-Paketinformationen
    for (TiffTag tag : root.getExifPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // Holen Sie sich EXIF-IFD-Paketinformationen
    for (TiffTag tag : root.getExifPackage().getExifIfdPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // Holen Sie sich GPS-Informationen
    for (TiffTag tag : root.getExifPackage().getGpsPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
}

Lesen Sie XMP-Daten von HEIC / HEIF-Bildern in Java

Die folgenden Schritte lesen XMP-Metadaten von HEIC- oder HEIF-Bildern.

  • Laden Sie das HEIF- oder HEIC-Bild mithilfe der Metadatenklasse.
  • Holen Sie sich das Root-Paket mit der Methode getRootPackage.
  • Aus dem Root-Paket können Sie die grundlegenden XMP-Informationen abrufen.
  • Außerdem können Sie die DCMI Dublin Core-Informationen erhalten.
  • Darüber hinaus können Sie Photoshop-Informationen mit der getPhotoshop-Methode abrufen.

Der folgende Quellcode zeigt, wie Sie XMP Basic-, DCMI- und Photoshop-Informationen in Java erhalten.

// Extrahieren Sie XMP Basic-, DublinCore- und Photoshop-Daten von heic- und heif-Bildern in Java
Metadata metadata = new Metadata("image.heic");
IXmp root = (IXmp) metadata.getRootPackage();

if (root.getXmpPackage() != null) {
    // XMP Basic    
    if (root.getXmpPackage().getSchemes().getXmpBasic() != null) {
        XmpBasicPackage xmpBasicPackage = root.getXmpPackage().getSchemes().getXmpBasic();
	System.out.println("Creator Tool : " + xmpBasicPackage.getCreatorTool());
	System.out.println("Create Date : " + xmpBasicPackage.getCreateDate());
	System.out.println("Modify Date : " + xmpBasicPackage.getModifyDate());
	System.out.println("Label : " + xmpBasicPackage.getLabel());
	System.out.println("Nick Name: " + xmpBasicPackage.getNickname());
	// ...
    }
    // DublinCore-Informationen
    if (root.getXmpPackage().getSchemes().getDublinCore() != null) {
	XmpDublinCorePackage xmpDublinCorePackage = root.getXmpPackage().getSchemes().getDublinCore();
	System.out.println("Format : " + xmpDublinCorePackage.getFormat());
	System.out.println("Coverage :" + xmpDublinCorePackage.getCoverage());
	System.out.println("Identifier : " + xmpDublinCorePackage.getIdentifier());
	System.out.println("Source : " + xmpDublinCorePackage.getSource());
	// ...
    }
    // Photoshop-Informationen
    if (root.getXmpPackage().getSchemes().getPhotoshop() != null) {
	XmpPhotoshopPackage xmpPhotoshopPackage = root.getXmpPackage().getSchemes().getPhotoshop();
	System.out.println("Color Mode : " + xmpPhotoshopPackage.getColorMode());
	System.out.println("ICC Profile : " + xmpPhotoshopPackage.getIccProfile());
	System.out.println("Country : " + xmpPhotoshopPackage.getCountry());
	System.out.println("City : " + xmpPhotoshopPackage.getCity());
	System.out.println("Date Created : " + xmpPhotoshopPackage.getDateCreated());
	// ...
    }
}

Ebenso gibt es viele Setter-Methoden, um verschiedene XMP-Eigenschaften festzulegen oder zu aktualisieren. Sie können sogar Ihr eigenes Schlüsselwertpaar bereitstellen, um die benutzerdefinierte XMP-Paketeigenschaft festzulegen.

Entfernen Sie EXIF- und XMP-Metadaten von HEIC/HEIF-Bildern in Java

Sie können das entsprechende EXIF-Paket oder XMP-Paket einfach auf null setzen, um alle Metadateneigenschaften zu entfernen.

Der folgende Code entfernt die EXIF-Daten von HEIC-Bildern.

try (Metadata metadata = new Metadata("image.heic")) {
	IExif root = (IExif) metadata.getRootPackage();
	root.setExifPackage(null);
	metadata.save("no-exif-image.heic");
}

Der folgende Code entfernt die XMP-Daten von HEIC-Bildern.

try (Metadata metadata = new Metadata("image.heic")) {
	IXmp root = (IXmp) metadata.getRootPackage();
	root.setXmpPackage(null);
	metadata.save("no-xmp-image.heic");
}

Fazit

Zusammenfassend haben wir gelernt, EXIF- und XMP-Metadaten aus den HEIF/HEIC-Bildern in Java zu extrahieren, zu aktualisieren und zu entfernen. Außerdem haben Sie gesehen, wie Sie IFD- und GPS-Informationen aus diesen Bildern erhalten. Jetzt können Sie diese Informationen einfach abrufen und auch Ihre eigenen Anwendungen wie GroupDocs.Metadata App Product Family erstellen, um Metadateninformationen zu automatisieren.

Weitere Informationen, Optionen und Beispiele finden Sie in der Dokumentation und im GitHub-Repository. Bei weiteren Fragen kontaktieren Sie uns im Support Forum.

Siehe auch