HEIC (High-Efficiency Image Container) è un contenitore che può contenere immagini HEIF in formato immagine ad alta efficienza. XMP è uno standard di metadati basato su XML, che può memorizzare le proprietà dei metadati come coppie nome/valore. Tuttavia, EXIF (Exchangeable Image File Format) è lo standard e definisce come archiviare le proprietà dei metadati nelle immagini e nei formati audio più comuni. In questo articolo impareremo come estrarre, aggiornare e rimuovere i metadati XMP ed EXIP delle immagini HEIF/HEIC utilizzando C# all’interno di applicazioni .NET.

Di seguito vengono trattati i seguenti argomenti:

API .NET per metadati XMP ed EXIF

GroupDocs.Metadata fornisce l’API .NET per automatizzare la gestione dei metadati all’interno delle applicazioni .NET. L’API consente di leggere, aggiornare, aggiungere, pulire/rimuovere e attraversare i metadati per molti formati di file. L’API supporta vari standard di metadati come EXIF, IPTC e XMP. Puoi anche visitare la documentazione per l’elenco completo dei formati di file supportati per la manipolazione dei metadati.

Puoi scaricare le DLL o il programma di installazione MSI dalla sezione download o installare l’API nella tua applicazione .NET tramite NuGet.

PM> Install-Package GroupDocs.Metadata

Leggi i dati EXIF delle immagini HEIC / HEIF in C#

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.
  • Attraversa 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 usando C#.

// Leggi EXIF, EXIF IFD, EXIF GPS Pacchetto di immagini HEIF / HEIC in C#
using (Metadata metadata = new Metadata(@"image.heic"))
{
    IExif root = metadata.GetRootPackage() as IExif;
    if (root != null && root.ExifPackage != null)
    {
        const string pattern = "{0} = {1}";

        foreach (TiffTag tag in root.ExifPackage.ToList())
        {
            Console.WriteLine(pattern, tag.TagID, tag.Value);
        }

        foreach (TiffTag tag in root.ExifPackage.ExifIfdPackage.ToList())
        {
            Console.WriteLine(pattern, tag.TagID, tag.Value);
        }

        foreach (TiffTag tag in root.ExifPackage.GpsPackage.ToList())
        {
            Console.WriteLine(pattern, tag.TagID, tag.Value);
        }
    }
}

Leggi i dati XMP delle immagini HEIC/HEIF in C#

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 su XMP, DCMI e Photoshop in C#.

// Estrai i dati XMP Basic, DublinCore e Photoshop di immagini HEIC e HEIF in C#
using (Metadata metadata = new Metadata(@"xmp.heic"))
{
    IXmp root = metadata.GetRootPackage() as IXmp;
    if (root != null && root.XmpPackage != null)
    {
        if (root.XmpPackage.Schemes.XmpBasic != null)
        {
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.CreatorTool);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.CreateDate);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.ModifyDate);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.Label);
            Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.Nickname);
            // ...
        }
        if (root.XmpPackage.Schemes.DublinCore != null)
        {
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Format);
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Coverage);
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Identifier);
            Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Source);
            // ...
        }
        if (root.XmpPackage.Schemes.Photoshop != null)
        {
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.ColorMode);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.IccProfile);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.Country);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.City);
            Console.WriteLine(root.XmpPackage.Schemes.Photoshop.DateCreated);
            // ... 
        }
        // ...
    }
}

Allo stesso modo, ci sono molti metodi setter per impostare o aggiornare diverse proprietà XMP. Puoi anche 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 C#

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 in C#.

using (Metadata metadata = new Metadata("image.heic"))
{
	IExif root = metadata.GetRootPackage() as IExif;
	if (root != null)
	{
		root.ExifPackage = null;
		metadata.Save("no-exif-image.heic");
	}
}

Il codice seguente rimuove i dati XMP delle immagini HEIC in C#.

using (Metadata metadata = new Metadata("image.heic"))
{
	IXmp root = metadata.GetRootPackage() as IXmp;
	if (root != null)
	{
		root.XmpPackage = null;
		metadata.Save("no-xmp-image.heic");
	}
}

Ottieni una licenza API gratuita

Puoi ottenere una licenza temporanea gratuita per utilizzare l’API senza i limiti di valutazione.

Conclusione

Per riassumere, abbiamo imparato a estrarre, aggiornare, rimuovere i metadati EXIF e XMP dalle immagini HEIF/HEIC in C#. Inoltre, hai visto come ottenere informazioni IFD e GPS da queste immagini. Ora puoi ottenere facilmente queste informazioni e anche iniziare 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