HEIC staat voor High Efficiency Image Container. Het is de bestandsextensie voor de vastgelegde afbeeldingen voor sommige Apple-apparaten. Het is een container die High-Efficiency Image Format HEIF-afbeeldingen kan bevatten. In dit artikel bespreken we hoe u de EXIF- en XMP-metagegevens van de HEIF/HEIC-afbeeldingen in Java-toepassingen kunt extraheren, bijwerken en verwijderen.

EXIF, het Exchangeable Image File Format, is de standaard die definieert hoe metadata-eigenschappen moeten worden opgeslagen in de meest voorkomende afbeeldingen en audioformaten. XMP is een op XML gebaseerde metadatastandaard, die elke set metadata-eigenschappen kan opslaan als naam/waarde-paren.

Hieronder worden de volgende onderwerpen behandeld

Java API voor EXIF en XMP Metadata

GroupDocs.Metadata biedt de API voor het manipuleren van metagegevens voor uw Java-toepassingen. De API maakt het mogelijk om functies voor veel bestandsindelingen te lezen, bij te werken, toe te voegen, op te schonen/verwijderen en te doorlopen. Het ondersteunt verschillende metadatastandaarden zoals EXIF, IPTC en XMP. Tekstverwerkingsdocumenten, spreadsheets, presentaties, e-mailberichten, eBooks, afbeeldingen, AutoCAD-tekeningen, audio- en videobestanden, torrents behoren tot de ondersteunde documentindelingen. Meer precies, u kunt de documentatie bezoeken voor de volledige lijst van ondersteunde bestandsindelingen voor metadatamanipulatie.

Downloaden en configureren

Download de metadatabibliotheek uit het gedeelte downloads. Voeg voor uw op Maven gebaseerde Java-toepassing gewoon de volgende pom.xml-configuratie toe. Hierna kun je de voorbeelden van dit artikel proberen, evenals de vele andere voorbeelden die beschikbaar zijn op GitHub. Voor meer informatie kunt u de API-referentie bezoeken.

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

Lees EXIF-gegevens van HEIF / HEIC-afbeeldingen in Java

Hieronder volgen de stappen om EXIF-gegevens van HEIC- en HEIF-afbeeldingen te lezen en te extraheren.

  • Laad de HEIF- of HEIC-afbeelding met behulp van de Metadata-klasse.
  • Download het rootpakket.
  • Haal het EXIF-pakket op uit het rootpakket.
  • Vanuit het EXIF-pakket kunt u de EXIF-gegevenseigenschappen doorlopen.
  • Bovendien kunt u de IFD (Image File Directory) en GPS-informatie uit het EXIF-pakket halen.

De volgende code laat zien hoe u EXIF-gegevens, IFD- en GPS-metagegevensinformatie van de HEIC-afbeelding kunt verkrijgen met behulp van Java.

// Lees EXIF, EXIF IFD, EXIF GPS-pakket van HEIF / HEIC-afbeeldingen in Java
Metadata metadata = new Metadata("image.heic");
IExif root = (IExif) metadata.getRootPackage();
if (root.getExifPackage() != null) {
    String pattern = "%s : %s";
    // Ontvang EXIF-pakketinformatie
    for (TiffTag tag : root.getExifPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // Ontvang EXIF IFD-pakketinformatie
    for (TiffTag tag : root.getExifPackage().getExifIfdPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // Ontvang GPS-informatie
    for (TiffTag tag : root.getExifPackage().getGpsPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
}

Lees XMP-gegevens van HEIC / HEIF-afbeeldingen in Java

De volgende stappen lezen XMP-metadata van HEIC- of HEIF-afbeeldingen.

  • Laad de HEIF- of HEIC-afbeelding met behulp van de Metadata-klasse.
  • Haal het rootpakket op met behulp van de methode getRootPackage.
  • Vanuit het rootpakket kunt u de XMP-basisinformatie ophalen.
  • Verder kunt u de DCMI Dublin Core-informatie krijgen.
  • Bovendien kunt u Photoshop-informatie verkrijgen met behulp van de getPhotoshop-methode.

De volgende broncode laat zien hoe u XMP basis-, DCMI- en Photoshop-informatie in Java kunt krijgen.

// Extraheer XMP Basis-, DublinCore- en Photoshop-gegevens van heic- en heif-afbeeldingen in Java
Metadata metadata = new Metadata("image.heic");
IXmp root = (IXmp) metadata.getRootPackage();

if (root.getXmpPackage() != null) {
    // XMP Basis    
    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-informatie
    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-informatie
    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());
	// ...
    }
}

Evenzo zijn er veel instelmethoden om verschillende XMP-eigenschappen in te stellen of bij te werken. U kunt zelfs uw eigen sleutel-waardepaar opgeven voor set the custom XMP package property.

Verwijder EXIF- en XMP-metadata van HEIC/HEIF-afbeeldingen in Java

U kunt gewoon het respectieve EXIF-pakket of XMP-pakket instellen op null om alle metadata-eigenschappen te verwijderen.

De volgende code verwijdert de EXIF-gegevens van HEIC-afbeeldingen.

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

De volgende code verwijdert de XMP-gegevens van HEIC-afbeeldingen.

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

Conclusie

Kortom, we hebben geleerd om EXIF- en XMP-metadata uit de HEIF/HEIC-afbeeldingen in Java te extraheren, bij te werken en te verwijderen. Verder heb je gezien hoe je IFD- en GPS-informatie uit deze afbeeldingen kunt halen. U kunt deze informatie nu eenvoudig verkrijgen en ook doorgaan met het bouwen van uw eigen applicaties zoals GroupDocs.Metadata App Product Family om metadata-informatie te automatiseren.

Voor meer informatie, opties en voorbeelden kun je de documentation en de GitHub repository bezoeken. Neem voor verdere vragen contact met ons op via het ondersteunings forum.

Zie ook