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
- Metadata Java API voor EXIF, XMP-gegevens
- Lees EXIF-gegevens van HEIC/HEIF-afbeeldingen
- Lees XMP-gegevens van HEIC/HEIF-afbeeldingen
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.