HEIC (High-Efficiency Image Container) is een container die High-Efficiency Image Format HEIF-afbeeldingen kan bevatten. XMP is een op XML gebaseerde metadatastandaard, die metadata-eigenschappen kan opslaan als naam/waarde-paren. EXIF (Exchangeable Image File Format) is echter de standaard en definieert hoe metadata-eigenschappen moeten worden opgeslagen in de meest voorkomende afbeeldingen en audioformaten. In dit artikel leren we hoe u de XMP- en EXIP-metadata van de HEIF/HEIC-afbeeldingen kunt extraheren, bijwerken en verwijderen met behulp van C# binnen .NET-toepassingen.

De volgende onderwerpen komen hieronder aan bod:

.NET API voor XMP- en EXIF-metagegevens

GroupDocs.Metadata biedt .NET API om metadatabeheer binnen .NET-applicaties te automatiseren. De API maakt het mogelijk om de metadata voor veel bestandsindelingen te lezen, bij te werken, toe te voegen, op te schonen/verwijderen en te doorlopen. Verschillende metadatastandaarden zoals EXIF, IPTC en XMP worden ondersteund door de API. U kunt ook de documentatie bezoeken voor de volledige lijst van ondersteunde bestandsindelingen voor metadatamanipulatie.

U kunt de DLL’s of het MSI-installatieprogramma downloaden van de downloadsectie of de API in uw .NET-toepassing installeren via NuGet.

PM> Install-Package GroupDocs.Metadata

Lees EXIF-gegevens van HEIC / HEIF-afbeeldingen in C#

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.
  • Doorloop de EXIF-gegevenseigenschappen.
  • 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 C#.

// Lees EXIF, EXIF IFD, EXIF GPS-pakket van HEIF / HEIC-afbeeldingen 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);
        }
    }
}

Lees XMP-gegevens van HEIC / HEIF-afbeeldingen in C#

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

// Extraheer XMP Basic-, DublinCore- en Photoshop-gegevens van HEIC- en HEIF-afbeeldingen 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);
            // ... 
        }
        // ...
    }
}

Evenzo zijn er veel instelmethoden om verschillende XMP-eigenschappen in te stellen of bij te werken. U kunt zelfs uw eigen sleutel/waarde-paar opgeven om de aangepaste XMP-pakketeigenschap in te stellen.

Verwijder EXIF- en XMP-metadata van HEIC/HEIF-afbeeldingen in C#

U kunt het respectieve EXIF-pakket of XMP-pakket gewoon instellen op null om alle metadata-eigenschappen te verwijderen.

De volgende code verwijdert de EXIF-gegevens van HEIC-afbeeldingen 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");
	}
}

De volgende code verwijdert de XMP-gegevens van HEIC-afbeeldingen 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");
	}
}

Ontvang een gratis API-licentie

U kunt een gratis tijdelijke licentie krijgen om de API te gebruiken zonder de evaluatiebeperkingen.

Conclusie

Kortom, we hebben geleerd om EXIF- en XMP-metadata uit de HEIF/HEIC-afbeeldingen in C# 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 beginnen 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.

Zie ook