HEIC (High-Efficiency Image Container) je kontejner, který může obsahovat obrázky HEIF ve formátu High-Efficiency Image Format. XMP je standard metadat založený na XML, který může ukládat vlastnosti metadat jako páry název/hodnota. EXIF (Exchangeable Image File Format) je však standard a definuje, jak ukládat vlastnosti metadat v nejběžnějších formátech obrázků a zvuku. V tomto článku se naučíme, jak extrahovat, aktualizovat a odstraňovat metadata XMP a EXIP obrázků HEIF/HEIC pomocí C# v aplikacích .NET.

Níže jsou uvedena následující témata:

.NET API pro XMP a EXIF Metadata

GroupDocs.Metadata poskytuje rozhraní .NET API pro automatizaci správy metadat v aplikacích .NET. API umožňuje číst, aktualizovat, přidávat, čistit/odebírat a procházet metadata pro mnoho formátů souborů. Rozhraní API podporuje různé standardy metadat jako EXIF, IPTC a XMP. Můžete také navštívit dokumentaci pro úplný seznam podporovaných formátů souborů pro manipulaci s metadaty.

Můžete si stáhnout DLL nebo instalační program MSI z části ke stažení nebo nainstalovat API do vaší aplikace .NET prostřednictvím NuGet.

PM> Install-Package GroupDocs.Metadata

Číst EXIF data obrázků HEIC / HEIF v C#

Následují kroky ke čtení a extrahování dat EXIF obrázků HEIC a HEIF.

  • Načtěte obrázek HEIF nebo HEIC pomocí třídy Metadata.
  • Získejte kořenový balíček.
  • Načtěte EXIF balíček z kořenového balíčku.
  • Projděte vlastnosti dat EXIF.
  • Dále můžete získat informace o IFD (Image File Directory) a GPS z balíčku EXIF.

Následující kód ukazuje, jak získat data EXIF, IFD a informace o metadatech GPS obrázku HEIC pomocí C#.

// Přečtěte si EXIF, EXIF IFD, EXIF GPS balíček obrázků HEIF / HEIC v 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);
        }
    }
}

Číst XMP data obrázků HEIC / HEIF v C#

Následující kroky přečtou metadata XMP obrázků HEIC nebo HEIF.

  • Načtěte obrázek HEIF nebo HEIC pomocí třídy Metadata.
  • Získejte kořenový balíček pomocí metody getRootPackage.
  • Z balíku root můžete získat základní informace o XMP.
  • Dále můžete získat informace o DCMI Dublin Core.
  • Kromě toho můžete získat informace o Photoshopu pomocí metody getPhotoshop.

Následující zdrojový kód ukazuje, jak získat základní informace XMP, DCMI a Photoshop v C#.

// Extrahujte data XMP Basic, DublinCore a Photoshop obrázků HEIC a HEIF v 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);
            // ... 
        }
        // ...
    }
}

Podobně existuje mnoho metod nastavení pro nastavení nebo aktualizaci různých vlastností XMP. Můžete dokonce poskytnout svůj vlastní pár klíč–hodnota pro nastavení vlastní vlastnosti balíčku XMP.

Odstraňte metadata EXIF a XMP obrázků HEIC/HEIF v C#

Můžete pouze nastavit příslušný balíček EXIF nebo balíček XMP na hodnotu null, abyste odstranili všechny vlastnosti metadat.

Následující kód odstraní data EXIF obrázků HEIC v 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");
	}
}

Následující kód odstraní data XMP obrázků HEIC v 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");
	}
}

Získejte bezplatnou licenci API

Můžete získat bezplatnou dočasnou licenci, abyste mohli používat API bez omezení hodnocení.

Závěr

Abych to shrnul, naučili jsme se extrahovat, aktualizovat, odstraňovat EXIF a XMP metadata z obrázků HEIF/HEIC v C#. Dále jste viděli, jak z těchto snímků získat informace IFD a GPS. Nyní můžete snadno získat tyto informace a také začít vytvářet své vlastní aplikace, jako je GroupDocs.Metadata App Product Family pro automatizaci informací o metadatech.

Další informace, možnosti a příklady naleznete v úložišti dokumentace a GitHub. V případě dalších dotazů nás kontaktujte na fóru podpory.

Viz také