HEIC significa contêiner de imagem de alta eficiência. É a extensão do arquivo para as imagens capturadas para alguns dos dispositivos da Apple. É um contêiner que pode conter imagens HEIF de formato de imagem de alta eficiência. Neste artigo, discutiremos como extrair, atualizar e remover os metadados EXIF e XMP das imagens HEIF/HEIC em aplicativos Java.
EXIF, o Exchangeable Image File Format é o padrão que define como armazenar propriedades de metadados nas imagens e formatos de áudio mais comuns. XMP é um padrão de metadados baseado em XML, que pode armazenar qualquer conjunto de propriedades de metadados como pares de nome/valor.
Os tópicos a seguir são abordados abaixo
- API Java de metadados para dados EXIF, XMP
- Ler dados EXIF de imagens HEIC/HEIF
- Ler dados XMP de imagens HEIC/HEIF
API Java para metadados EXIF e XMP
GroupDocs.Metadata fornece a API de manipulação de metadados para seus aplicativos Java. A API permite ler, atualizar, adicionar, limpar/remover e percorrer recursos para muitos formatos de arquivo. Ele suporta vários padrões de metadados como EXIF, IPTC e XMP. Documentos de processamento de texto, planilhas, apresentações, mensagens de e-mail, eBooks, imagens, desenhos AutoCAD, arquivos de áudio e vídeo, torrents, estão entre os formatos de documentos suportados. Mais precisamente, você pode visitar a documentação para obter a lista completa de formatos de arquivo suportados para manipulação de metadados.
Baixe e configure
Obtenha a biblioteca de metadados da seção downloads. Para seu aplicativo Java baseado em Maven, basta adicionar a seguinte configuração pom.xml. Depois disso, você pode tentar os exemplos deste artigo, bem como muitos outros exemplos disponíveis no GitHub. Para obter detalhes, você pode visitar a Referência da API.
<repository>
<id>GroupDocsJavaAPI</id>
<name>GroupDocs Java API</name>
<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-metadata</artifactId>
<version>21.4</version>
</dependency>
Leia dados EXIF de imagens HEIF / HEIC em Java
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.
- A partir do pacote EXIF, você pode 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 Java.
// Leia EXIF, EXIF IFD, EXIF GPS Package de imagens HEIF / HEIC em Java
Metadata metadata = new Metadata("image.heic");
IExif root = (IExif) metadata.getRootPackage();
if (root.getExifPackage() != null) {
String pattern = "%s : %s";
// Obter informações do pacote EXIF
for (TiffTag tag : root.getExifPackage().toList()) {
System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
}
// Obter informações do pacote EXIF IFD
for (TiffTag tag : root.getExifPackage().getExifIfdPackage().toList()) {
System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
}
// Obter informações de GPS
for (TiffTag tag : root.getExifPackage().getGpsPackage().toList()) {
System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
}
}
Leia dados XMP de imagens HEIC / HEIF em Java
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 Java.
// Extraia dados XMP Básico, DublinCore e Photoshop de imagens heic e heif em Java
Metadata metadata = new Metadata("image.heic");
IXmp root = (IXmp) metadata.getRootPackage();
if (root.getXmpPackage() != null) {
// XMP Básico
if (root.getXmpPackage().getSchemes().getXmpBasic() != null) {
XmpBasicPackage xmpBasicPackage = root.getXmpPackage().getSchemes().getXmpBasic();
System.out.println("Creator Tool : " + xmpBasicPackage.getCreatorTool());
System.out.println("Create Date : " + xmpBasicPackage.getCreateDate());
System.out.println("Modify Date : " + xmpBasicPackage.getModifyDate());
System.out.println("Label : " + xmpBasicPackage.getLabel());
System.out.println("Nick Name: " + xmpBasicPackage.getNickname());
// ...
}
// Informações DublinCore
if (root.getXmpPackage().getSchemes().getDublinCore() != null) {
XmpDublinCorePackage xmpDublinCorePackage = root.getXmpPackage().getSchemes().getDublinCore();
System.out.println("Format : " + xmpDublinCorePackage.getFormat());
System.out.println("Coverage :" + xmpDublinCorePackage.getCoverage());
System.out.println("Identifier : " + xmpDublinCorePackage.getIdentifier());
System.out.println("Source : " + xmpDublinCorePackage.getSource());
// ...
}
// Informações do Photoshop
if (root.getXmpPackage().getSchemes().getPhotoshop() != null) {
XmpPhotoshopPackage xmpPhotoshopPackage = root.getXmpPackage().getSchemes().getPhotoshop();
System.out.println("Color Mode : " + xmpPhotoshopPackage.getColorMode());
System.out.println("ICC Profile : " + xmpPhotoshopPackage.getIccProfile());
System.out.println("Country : " + xmpPhotoshopPackage.getCountry());
System.out.println("City : " + xmpPhotoshopPackage.getCity());
System.out.println("Date Created : " + xmpPhotoshopPackage.getDateCreated());
// ...
}
}
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.
Remover metadados EXIF e XMP de imagens HEIC/HEIF em Java
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 das imagens HEIC.
try (Metadata metadata = new Metadata("image.heic")) {
IExif root = (IExif) metadata.getRootPackage();
root.setExifPackage(null);
metadata.save("no-exif-image.heic");
}
O código a seguir remove os dados XMP das imagens HEIC.
try (Metadata metadata = new Metadata("image.heic")) {
IXmp root = (IXmp) metadata.getRootPackage();
root.setXmpPackage(null);
metadata.save("no-xmp-image.heic");
}
Conclusão
Resumindo, aprendemos a extrair, atualizar, remover metadados EXIF e XMP das imagens HEIF/HEIC em Java. 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 continuar criando 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.