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 EXIF, metadados XMP
- Ler dados EXIF de imagens HEIC/HEIF
- Ler dados XMP de imagens HEIC/HEIF
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.