HEIC (High-Efficiency Image Container) — це контейнер, який може містити зображення HEIF у форматі високоефективного зображення. XMP — це стандарт метаданих на основі XML, який може зберігати властивості метаданих як пари ім’я/значення. Однак стандартом є EXIF (формат файлу змінного зображення), який визначає, як зберігати властивості метаданих у найпоширеніших форматах зображень і аудіо. У цій статті ми дізнаємося, як видобувати, оновлювати та видаляти метадані XMP і EXIP зображень HEIF/HEIC за допомогою C# у програмах .NET.

Нижче розглядаються такі теми:

.NET API для метаданих XMP і EXIF

GroupDocs.Metadata надає .NET API для автоматизації керування метаданими в програмах .NET. API дозволяє читати, оновлювати, додавати, очищати/видаляти та переглядати метадані для багатьох форматів файлів. API підтримує різні стандарти метаданих, такі як EXIF, IPTC і XMP. Ви також можете відвідати документацію, щоб отримати повний список підтримуваних форматів файлів для обробки метаданих.

Ви можете завантажити DLL або інсталятор MSI із розділу завантажень або встановити API у своїй програмі .NET за допомогою NuGet.

PM> Install-Package GroupDocs.Metadata

Читання даних EXIF зображень HEIC / HEIF у C#

Нижче наведено кроки для читання та вилучення даних EXIF із зображень HEIC і HEIF.

  • Завантажте зображення HEIF або HEIC за допомогою класу метаданих.
  • Отримайте кореневий пакет.
  • Отримайте пакет EXIF із кореневого пакета.
  • Перегляньте властивості даних EXIF.
  • Крім того, ви можете отримати інформацію про IFD (каталог файлів зображень) і GPS із пакета EXIF.

Наступний код показує, як отримати дані EXIF, метадані IFD і GPS зображення HEIC за допомогою C#.

// Читайте EXIF, EXIF IFD, EXIF GPS пакет зображень HEIF / HEIC у 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);
        }
    }
}

Читання даних XMP зображень HEIC / HEIF у C#

Наступні кроки читають метадані XMP із зображень HEIC або HEIF.

  • Завантажте зображення HEIF або HEIC за допомогою класу метаданих.
  • Отримайте кореневий пакет за допомогою методу getRootPackage.
  • З кореневого пакета ви можете отримати основну інформацію XMP.
  • Крім того, ви можете отримати інформацію про DCMI Dublin Core.
  • Крім того, ви можете отримати інформацію Photoshop за допомогою методу getPhotoshop.

У наведеному нижче вихідному коді показано, як отримати інформацію XMP basic, DCMI і Photoshop у C#.

// Екстрагуйте дані XMP Basic, DublinCore і Photoshop із зображень HEIC і HEIF у 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);
            // ... 
        }
        // ...
    }
}

Подібним чином існує багато методів встановлення або оновлення різних властивостей XMP. Ви навіть можете вказати власну пару ключ-значення, щоб налаштувати спеціальну властивість пакета XMP.

Видалення метаданих EXIF і XMP із зображень HEIC/HEIF у C#

Ви можете просто встановити для відповідного пакета EXIF або пакета XMP значення null, щоб видалити всі властивості метаданих.

Наступний код видаляє дані EXIF із зображень HEIC у 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");
	}
}

Наступний код видаляє дані XMP із зображень HEIC у 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");
	}
}

Отримайте безкоштовну ліцензію API

Ви можете отримати безкоштовну тимчасову ліцензію, щоб використовувати API без оціночних обмежень.

Висновок

Підводячи підсумок, ми навчилися видобувати, оновлювати, видаляти метадані EXIF і XMP із зображень HEIF/HEIC у C#. Крім того, ви бачили, як отримати інформацію IFD і GPS із цих зображень. Тепер ви можете легко отримати цю інформацію, а також розпочати створення власних програм, таких як GroupDocs.Metadata App Product Family для автоматизації метаданих.

Щоб отримати додаткові відомості, параметри та приклади, ви можете відвідати документацію і репозиторій GitHub. Щоб отримати додаткові запитання, зв’яжіться з нами на [форумі] підтримки 13.

Дивись також