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.