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

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.

Viz také