HEIC (High-Efficiency Image Container) ist ein Container, der Bilder im High-Efficiency Image Format HEIF enthalten kann. XMP ist ein XML-basierter Metadatenstandard, der Metadateneigenschaften als Name/Wert-Paare speichern kann. EXIF (Exchangeable Image File Format) ist jedoch der Standard und definiert, wie Metadateneigenschaften in den gängigsten Bild- und Audioformaten gespeichert werden. In diesem Artikel erfahren wir, wie Sie die XMP- und EXIP-Metadaten der HEIF/HEIC-Bilder mithilfe von C# in .NET-Anwendungen extrahieren, aktualisieren und entfernen.

Nachfolgend werden folgende Themen behandelt:

.NET-API für XMP- und EXIF-Metadaten

GroupDocs.Metadata bietet eine .NET-API zur Automatisierung der Metadatenverwaltung in .NET-Anwendungen. Die API ermöglicht das Lesen, Aktualisieren, Hinzufügen, Bereinigen/Entfernen und Durchlaufen der Metadaten für viele Dateiformate. Verschiedene Metadatenstandards wie EXIF, IPTC und XMP werden von der API unterstützt. Sie können auch die Dokumentation für die vollständige Liste der unterstützten Dateiformate für die Bearbeitung von Metadaten aufrufen.

Sie können das DLLs- oder MSI-Installationsprogramm aus dem Downloadbereich herunterladen oder die API in Ihrer .NET-Anwendung über NuGet installieren.

PM> Install-Package GroupDocs.Metadata

Lesen Sie EXIF-Daten von HEIC / HEIF-Bildern in C#

Im Folgenden sind die Schritte zum Lesen und Extrahieren von EXIF-Daten von HEIC- und HEIF-Bildern aufgeführt.

  • Laden Sie das HEIF- oder HEIC-Bild mithilfe der Metadatenklasse.
  • Holen Sie sich das Root-Paket.
  • Rufen Sie das EXIF-Paket aus dem Root-Paket ab.
  • Durchsuchen Sie die EXIF-Dateneigenschaften.
  • Darüber hinaus können Sie die IFD- (Image File Directory) und GPS-Informationen aus dem EXIF-Paket abrufen.

Der folgende Code zeigt, wie Sie EXIF-Daten, IFD- und GPS-Metadateninformationen des HEIC-Bilds mit C# abrufen.

// Lesen Sie EXIF-, EXIF-IFD-, EXIF-GPS-Pakete von HEIF-/HEIC-Bildern 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);
        }
    }
}

Lesen Sie XMP-Daten von HEIC / HEIF-Bildern in C#

Die folgenden Schritte lesen XMP-Metadaten von HEIC- oder HEIF-Bildern.

  • Laden Sie das HEIF- oder HEIC-Bild mithilfe der Metadatenklasse.
  • Holen Sie sich das Root-Paket mit der Methode getRootPackage.
  • Aus dem Root-Paket können Sie die grundlegenden XMP-Informationen abrufen.
  • Außerdem können Sie die DCMI Dublin Core-Informationen erhalten.
  • Darüber hinaus können Sie Photoshop-Informationen mit der getPhotoshop-Methode abrufen.

Der folgende Quellcode zeigt, wie Sie XMP Basic-, DCMI- und Photoshop-Informationen in C# erhalten.

// Extrahieren Sie XMP Basic-, DublinCore- und Photoshop-Daten von HEIC- und HEIF-Bildern 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);
            // ... 
        }
        // ...
    }
}

Ebenso gibt es viele Setter-Methoden, um verschiedene XMP-Eigenschaften festzulegen oder zu aktualisieren. Sie können sogar Ihr eigenes Schlüssel-Wert-Paar bereitstellen, um die benutzerdefinierte XMP-Paketeigenschaft festzulegen.

Entfernen Sie EXIF- und XMP-Metadaten von HEIC/HEIF-Bildern in C#

Sie können das entsprechende EXIF-Paket oder XMP-Paket einfach auf null setzen, um alle Metadateneigenschaften zu entfernen.

Der folgende Code entfernt die EXIF-Daten von HEIC-Bildern 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");
	}
}

Der folgende Code entfernt die XMP-Daten von HEIC-Bildern 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");
	}
}

Holen Sie sich eine kostenlose API-Lizenz

Sie können eine kostenlose temporäre Lizenz erhalten, um die API ohne die Evaluierungseinschränkungen zu verwenden.

Fazit

Zusammenfassend haben wir gelernt, EXIF- und XMP-Metadaten aus den HEIF/HEIC-Bildern in C# zu extrahieren, zu aktualisieren und zu entfernen. Außerdem haben Sie gesehen, wie Sie IFD- und GPS-Informationen aus diesen Bildern erhalten. Jetzt können Sie diese Informationen ganz einfach abrufen und auch mit dem Erstellen Ihrer eigenen Anwendungen wie GroupDocs.Metadata App Product Family beginnen, um Metadateninformationen zu automatisieren.

Weitere Informationen, Optionen und Beispiele finden Sie in der Dokumentation und im GitHub-Repository. Bei weiteren Fragen kontaktieren Sie uns im Support Forum.

Siehe auch