HEIC (High-Efficiency Image Container) — это контейнер, который может содержать изображения в формате High-Efficiency Image Format HEIF. XMP — это стандарт метаданных на основе XML, который может хранить свойства метаданных в виде пар имя/значение. Однако EXIF (Exchangeable Image File Format) является стандартом и определяет, как хранить свойства метаданных в наиболее распространенных форматах изображений и аудио. В этой статье мы узнаем, как извлекать, обновлять и удалять метаданные XMP и EXIP изображений HEIF/HEIC с помощью C# в приложениях .NET.
Ниже рассматриваются следующие темы:
- .NET API для метаданных EXIF, XMP
- Чтение данных EXIF изображений HEIC/HEIF
- Чтение данных XMP изображений HEIC/HEIF
.NET API для метаданных XMP и EXIF
GroupDocs.Metadata предоставляет .NET API для автоматизации управления метаданными в приложениях .NET. API позволяет читать, обновлять, добавлять, очищать/удалять и просматривать метаданные для многих форматов файлов. Различные стандарты метаданных, такие как EXIF, IPTC и XMP, поддерживаются API. Вы также можете посетить документацию для получения полного списка поддерживаемых форматов файлов для манипулирования метаданными.
Вы можете загрузить DLL или MSI установщик из раздела загрузок или установить API в свое приложение .NET через NuGet.
PM> Install-Package GroupDocs.Metadata
Чтение данных EXIF изображений HEIC/HEIF на С#
Ниже приведены шаги для чтения и извлечения данных 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 в С#
Следующие шаги считывают метаданные 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.