HEIC sta per Contenitore di immagini ad alta efficienza. È l’estensione del file per le immagini acquisite per alcuni dispositivi Apple. È un contenitore che può contenere immagini HEIF in formato immagine ad alta efficienza. In questo articolo, discuteremo di come estrarre, aggiornare e rimuovere i metadati EXIF e XMP delle immagini HEIF/HEIC all’interno delle applicazioni Java.

EXIF, lo Exchangeable Image File Format è lo standard che definisce come archiviare le proprietà dei metadati nelle immagini e nei formati audio più comuni. XMP è uno standard di metadati basato su XML, che può archiviare qualsiasi insieme di proprietà di metadati come coppie nome/valore.

I seguenti argomenti sono trattati di seguito

API Java per metadati EXIF e XMP

GroupDocs.Metadata fornisce l’API di manipolazione dei metadati per le tue applicazioni Java. L’API consente di leggere, aggiornare, aggiungere, pulire/rimuovere e attraversare le funzionalità per molti formati di file. Supporta vari standard di metadati come EXIF, IPTC e XMP. Tra i formati di documenti supportati figurano documenti di elaborazione testi, fogli di calcolo, presentazioni, messaggi di posta elettronica, eBook, immagini, disegni AutoCAD, file audio e video, torrent. Più precisamente, puoi visitare la documentazione per l’elenco completo dei formati di file supportati per la manipolazione dei metadati.

Scarica e configura

Ottieni la libreria di metadati dalla sezione download. Per la tua applicazione Java basata su Maven, aggiungi semplicemente la seguente configurazione pom.xml. Dopo questo, puoi provare gli esempi di questo articolo e molti altri esempi disponibili su GitHub. Per i dettagli, puoi visitare il Riferimento API.

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

Leggi i dati EXIF delle immagini HEIF / HEIC in Java

Di seguito sono riportati i passaggi per leggere ed estrarre i dati EXIF delle immagini HEIC e HEIF.

  • Carica l’immagine HEIF o HEIC utilizzando la classe Metadata.
  • Ottieni il pacchetto di root.
  • Recupera il pacchetto EXIF dal pacchetto radice.
  • Dal pacchetto EXIF, puoi attraversare le proprietà dei dati EXIF.
  • Inoltre, puoi ottenere le informazioni IFD (Image File Directory) e GPS dal pacchetto EXIF.

Il codice seguente mostra come ottenere dati EXIF, informazioni sui metadati IFD e GPS dell’immagine HEIC utilizzando Java.

// Leggi EXIF, EXIF IFD, EXIF GPS Pacchetto di immagini HEIF / HEIC in Java
Metadata metadata = new Metadata("image.heic");
IExif root = (IExif) metadata.getRootPackage();
if (root.getExifPackage() != null) {
    String pattern = "%s : %s";
    // Ottieni informazioni sul pacchetto EXIF
    for (TiffTag tag : root.getExifPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // Ottieni informazioni sul pacchetto EXIF IFD
    for (TiffTag tag : root.getExifPackage().getExifIfdPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // Ottieni informazioni GPS
    for (TiffTag tag : root.getExifPackage().getGpsPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
}

Leggi i dati XMP delle immagini HEIC / HEIF in Java

I passaggi seguenti leggono i metadati XMP delle immagini HEIC o HEIF.

  • Carica l’immagine HEIF o HEIC utilizzando la classe Metadata.
  • Ottieni il pacchetto radice usando il metodo getRootPackage.
  • Dal pacchetto principale, puoi ottenere le informazioni di base di XMP.
  • Inoltre, puoi ottenere le informazioni DCMI Dublin Core.
  • Inoltre, puoi ottenere informazioni su Photoshop utilizzando il metodo getPhotoshop.

Il codice sorgente seguente mostra come ottenere informazioni di base XMP, DCMI e Photoshop in Java.

// Estrai i dati XMP di base, DublinCore e Photoshop di immagini heic e heif in Java
Metadata metadata = new Metadata("image.heic");
IXmp root = (IXmp) metadata.getRootPackage();

if (root.getXmpPackage() != null) {
    // XMP di base    
    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());
	// ...
    }
    // Informazioni DublinCore
    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());
	// ...
    }
    // Informazioni su Photoshop
    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());
	// ...
    }
}

Allo stesso modo, ci sono molti metodi setter per impostare o aggiornare diverse proprietà XMP. Puoi persino fornire la tua coppia chiave-valore per impostare la proprietà del pacchetto XMP personalizzato.

Rimuovere i metadati EXIF e XMP delle immagini HEIC/HEIF in Java

Puoi semplicemente impostare il rispettivo pacchetto EXIF o XMP su null per rimuovere tutte le proprietà dei metadati.

Il codice seguente rimuove i dati EXIF delle immagini HEIC.

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

Il codice seguente rimuove i dati XMP delle immagini HEIC.

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

Conclusione

Per riassumere, abbiamo imparato a estrarre, aggiornare, rimuovere i metadati EXIF e XMP dalle immagini HEIF/HEIC in Java. Inoltre, hai visto come ottenere informazioni IFD e GPS da queste immagini. Ora puoi ottenere facilmente queste informazioni e anche continuare a creare le tue applicazioni come GroupDocs.Metadata App Product Family per automatizzare le informazioni sui metadati.

Per ulteriori informazioni, opzioni ed esempi, puoi visitare la documentazione e il repository GitHub. Per ulteriori domande, contattaci sul supporto forum.

Guarda anche