HEIC (Contêiner de Imagem de Alta Eficiência) é um contêiner que pode conter imagens HEIF em Formato de Imagem de Alta Eficiência. XMP é um padrão de metadados baseado em XML, que pode armazenar propriedades de metadados como pares de nome/valor. No entanto, EXIF (Exchangeable Image File Format) é o padrão e define como armazenar propriedades de metadados nas imagens e formatos de áudio mais comuns. Neste artigo, aprenderemos como extrair, atualizar e remover os metadados XMP e EXIP das imagens HEIF/HEIC usando C# em aplicativos .NET.

Os seguintes tópicos são abordados abaixo:

API .NET para metadados XMP e EXIF

GroupDocs.Metadata fornece API .NET para automatizar o gerenciamento de metadados em aplicativos .NET. A API permite ler, atualizar, adicionar, limpar/remover e percorrer os metadados para vários formatos de arquivo. Vários padrões de metadados como EXIF, IPTC e XMP são suportados pela API. Você também pode visitar a documentação para obter a lista completa de formatos de arquivo suportados para manipulação de metadados.

Você pode baixar o instalador DLLs ou MSI da seção de downloads ou instalar a API em seu aplicativo .NET via NuGet.

PM> Install-Package GroupDocs.Metadata

Leia dados EXIF de imagens HEIC / HEIF em C

A seguir estão as etapas para ler e extrair dados EXIF de imagens HEIC e HEIF.

  • Carregue a imagem HEIF ou HEIC usando a classe Metadata.
  • Obtenha o pacote raiz.
  • Recupere o pacote EXIF do pacote raiz.
  • Percorrer as propriedades de dados EXIF.
  • Além disso, você pode obter as informações IFD (Image File Directory) e GPS do pacote EXIF.

O código a seguir mostra como obter dados EXIF, informações de metadados IFD e GPS da imagem HEIC usando C#.

// Leia EXIF, EXIF IFD, EXIF GPS Package de imagens HEIF / HEIC em 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);
        }
    }
}

Leia dados XMP de imagens HEIC / HEIF em C

As etapas a seguir lêem metadados XMP de imagens HEIC ou HEIF.

  • Carregue a imagem HEIF ou HEIC usando a classe Metadata.
  • Obtenha o pacote raiz usando o método getRootPackage.
  • A partir do pacote raiz, você pode obter as informações básicas do XMP.
  • Além disso, você pode obter as informações do DCMI Dublin Core.
  • Além disso, você pode obter informações do Photoshop usando o método getPhotoshop.

O código-fonte a seguir mostra como obter informações básicas de XMP, DCMI e Photoshop em C#.

// Extraia dados XMP Basic, DublinCore e Photoshop de imagens HEIC e HEIF em 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);
            // ... 
        }
        // ...
    }
}

Da mesma forma, existem muitos métodos setter para definir ou atualizar diferentes propriedades XMP. Você pode até fornecer seu próprio par de valores-chave para definir a propriedade do pacote XMP personalizado.

Remova os metadados EXIF e XMP de imagens HEIC/HEIF em C#

Você pode simplesmente definir o respectivo pacote EXIF ou pacote XMP como nulo para remover todas as propriedades de metadados.

O código a seguir remove os dados EXIF de imagens HEIC em 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");
	}
}

O código a seguir remove os dados XMP de imagens HEIC em 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");
	}
}

Obtenha uma licença de API gratuita

Você pode obter uma licença temporária gratuita para usar a API sem as limitações de avaliação.

Conclusão

Resumindo, aprendemos a extrair, atualizar, remover metadados EXIF e XMP das imagens HEIF/HEIC em C#. Além disso, você viu como obter informações IFD e GPS dessas imagens. Agora você pode obter facilmente essas informações e também começar a criar seus próprios aplicativos, como GroupDocs.Metadata App Product Family para automatizar informações de metadados.

Para obter mais informações, opções e exemplos, você pode visitar o repositório documentation e GitHub. Para mais dúvidas, entre em contato conosco no suporte fórum.

Veja também