HEIC je zkratka pro High-Efficiency Image Container. Je to přípona souboru pro pořízené obrázky pro některá zařízení Apple. Jedná se o kontejner, který může obsahovat obrázky HEIF ve formátu High-Efficiency Image Format. V tomto článku probereme, jak extrahovat, aktualizovat a odstraňovat metadata EXIF a XMP obrázků HEIF/HEIC v aplikacích Java.
EXIF, formát Exchangeable Image File Format je standard, který definuje, jak ukládat vlastnosti metadat v nejběžnějších formátech obrázků a zvuku. XMP je standard metadat založený na XML, který může ukládat jakoukoli sadu vlastností metadat jako páry název/hodnota.
Níže jsou uvedena následující témata
- Metadata Java API pro EXIF, XMP data
- Přečtěte si EXIF data obrázků HEIC/HEIF
- Čtení XMP dat obrázků HEIC/HEIF
Java API pro metadata EXIF a XMP
GroupDocs.Metadata poskytuje rozhraní API pro manipulaci s metadaty pro vaše aplikace Java. API umožňuje číst, aktualizovat, přidávat, čistit/odebírat a procházet funkce pro mnoho formátů souborů. Podporuje různé standardy metadat jako EXIF, IPTC a XMP. Mezi podporované formáty dokumentů patří textové dokumenty, tabulky, prezentace, e-mailové zprávy, e-knihy, obrázky, výkresy AutoCAD, audio a video soubory, torrenty. Přesněji řečeno, můžete navštívit dokumentaci pro úplný seznam podporovaných formátů souborů pro manipulaci s metadaty.
Stáhnout a nakonfigurovat
Získejte knihovnu metadat ze sekce ke stažení. Pro vaši Java aplikaci založenou na Maven stačí přidat následující konfiguraci pom.xml. Poté si můžete vyzkoušet příklady z tohoto článku a také mnoho dalších příkladů dostupných na GitHub. Podrobnosti naleznete v Odkaz na rozhraní 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>
Čtěte EXIF data obrázků HEIF / HEIC v Java
Následují kroky ke čtení a extrahování dat EXIF obrázků HEIC a HEIF.
- Načtěte obrázek HEIF nebo HEIC pomocí třídy Metadata.
- Získejte kořenový balíček.
- Načtěte EXIF balíček z kořenového balíčku.
- Z balíku EXIF můžete procházet vlastnosti dat EXIF.
- Dále můžete získat informace o IFD (Image File Directory) a GPS z balíčku EXIF.
Následující kód ukazuje, jak získat data EXIF, IFD a informace o metadatech GPS obrázku HEIC pomocí Java.
// Přečtěte si EXIF, EXIF IFD, EXIF GPS balíček obrázků HEIF / HEIC v Java
Metadata metadata = new Metadata("image.heic");
IExif root = (IExif) metadata.getRootPackage();
if (root.getExifPackage() != null) {
String pattern = "%s : %s";
// Získejte informace o balíčku EXIF
for (TiffTag tag : root.getExifPackage().toList()) {
System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
}
// Získejte informace o balíčku EXIF IFD
for (TiffTag tag : root.getExifPackage().getExifIfdPackage().toList()) {
System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
}
// Získejte informace GPS
for (TiffTag tag : root.getExifPackage().getGpsPackage().toList()) {
System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
}
}
Čtení XMP dat obrázků HEIC / HEIF v Java
Následující kroky čtou metadata XMP obrázků HEIC nebo HEIF.
- Načtěte obrázek HEIF nebo HEIC pomocí třídy Metadata.
- Získejte kořenový balíček pomocí metody getRootPackage.
- Z balíku root můžete získat základní informace o XMP.
- Dále můžete získat informace o DCMI Dublin Core.
- Kromě toho můžete získat informace o Photoshopu pomocí metody getPhotoshop.
Následující zdrojový kód ukazuje, jak získat základní informace XMP, DCMI a Photoshop v Java.
// Extrahujte data Základní XMP, DublinCore a Photoshop obrázků heic a heif v Java
Metadata metadata = new Metadata("image.heic");
IXmp root = (IXmp) metadata.getRootPackage();
if (root.getXmpPackage() != null) {
// Základní XMP
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());
// ...
}
// Informace o 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());
// ...
}
// Informace o Photoshopu
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());
// ...
}
}
Podobně existuje mnoho metod nastavení pro nastavení nebo aktualizaci různých vlastností XMP. Můžete dokonce poskytnout svůj vlastní pár klíč–hodnota pro nastavení vlastní vlastnosti balíčku XMP.
Odstraňte metadata EXIF a XMP z obrázků HEIC/HEIF v Java
Můžete pouze nastavit příslušný balíček EXIF nebo balíček XMP na hodnotu null, abyste odstranili všechny vlastnosti metadat.
Následující kód odstraní data EXIF obrázků HEIC.
try (Metadata metadata = new Metadata("image.heic")) {
IExif root = (IExif) metadata.getRootPackage();
root.setExifPackage(null);
metadata.save("no-exif-image.heic");
}
Následující kód odstraní data XMP obrázků HEIC.
try (Metadata metadata = new Metadata("image.heic")) {
IXmp root = (IXmp) metadata.getRootPackage();
root.setXmpPackage(null);
metadata.save("no-xmp-image.heic");
}
Závěr
Abych to shrnul, naučili jsme se extrahovat, aktualizovat, odstraňovat EXIF a XMP metadata z obrázků HEIF/HEIC v Java. Dále jste viděli, jak z těchto snímků získat informace IFD a GPS. Nyní můžete snadno získat tyto informace a také pokračovat ve vytváření vlastních aplikací, jako je GroupDocs.Metadata App Product Family, pro automatizaci informací o metadatech.
Další informace, možnosti a příklady naleznete v úložišti dokumentace a GitHub. V případě dalších dotazů nás kontaktujte na fóru podpory.