HEIC to skrót od High-Efficiency Image Container. Jest to rozszerzenie pliku dla przechwyconych obrazów dla niektórych urządzeń Apple. Jest to kontener, który może zawierać obrazy HEIF w formacie obrazu o wysokiej wydajności. W tym artykule omówimy, jak wyodrębniać, aktualizować i usuwać metadane EXIF i XMP obrazów HEIF / HEIC w aplikacjach Java.

EXIF, Exchangeable Image File Format to standard określający sposób przechowywania właściwości metadanych w najpopularniejszych formatach obrazów i plików audio. XMP to oparty na XML standard metadanych, który może przechowywać dowolny zestaw właściwości metadanych jako pary nazwa/wartość.

Poniżej omówiono następujące tematy

Java API dla metadanych EXIF i XMP

GroupDocs.Metadata zapewnia interfejs API do manipulowania metadanymi dla aplikacji Java. Interfejs API umożliwia odczytywanie, aktualizowanie, dodawanie, czyszczenie/usuwanie i przeglądanie funkcji dla wielu formatów plików. Obsługuje różne standardy metadanych, takie jak EXIF, IPTC i XMP. Do obsługiwanych formatów dokumentów należą dokumenty edytorów tekstu, arkusze kalkulacyjne, prezentacje, wiadomości e-mail, eBooki, obrazy, rysunki AutoCAD, pliki audio i wideo, torrenty. Dokładniej, pełną listę [obsługiwanych formatów plików do manipulacji metadanymi] można znaleźć w dokumentacji 6.

Pobierz i skonfiguruj

Pobierz bibliotekę metadanych z sekcji pliki do pobrania. W przypadku aplikacji Java opartej na Maven wystarczy dodać następującą konfigurację pom.xml. Następnie możesz wypróbować przykłady z tego artykułu, a także wiele innych przykładów dostępnych na GitHub. Aby uzyskać szczegółowe informacje, odwiedź Odniesienie do interfejsu 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>

Czytaj dane EXIF obrazów HEIF / HEIC w Javie

Poniżej przedstawiono kroki, aby odczytać i wyodrębnić dane EXIF z obrazów HEIC i HEIF.

  • Załaduj obraz HEIF lub HEIC przy użyciu klasy Metadata.
  • Pobierz pakiet główny.
  • Pobierz pakiet EXIF z pakietu głównego.
  • Z pakietu EXIF można przeglądać właściwości danych EXIF.
  • Ponadto można uzyskać informacje IFD (katalog plików obrazów) i GPS z pakietu EXIF.

Poniższy kod pokazuje, jak uzyskać dane EXIF, informacje o metadanych IFD i GPS obrazu HEIC przy użyciu języka Java.

// Czytaj EXIF, EXIF IFD, EXIF GPS Pakiet obrazów HEIF / HEIC w Javie
Metadata metadata = new Metadata("image.heic");
IExif root = (IExif) metadata.getRootPackage();
if (root.getExifPackage() != null) {
    String pattern = "%s : %s";
    // Uzyskaj informacje o pakiecie EXIF
    for (TiffTag tag : root.getExifPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // Uzyskaj informacje o pakiecie EXIF IFD
    for (TiffTag tag : root.getExifPackage().getExifIfdPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // Uzyskaj informacje GPS
    for (TiffTag tag : root.getExifPackage().getGpsPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
}

Czytaj dane XMP obrazów HEIC / HEIF w Javie

Poniższe kroki odczytują metadane XMP obrazów HEIC lub HEIF.

  • Załaduj obraz HEIF lub HEIC przy użyciu klasy Metadata.
  • Pobierz pakiet główny za pomocą metody getRootPackage.
  • Z pakietu głównego można uzyskać podstawowe informacje XMP.
  • Ponadto możesz uzyskać informacje DCMI Dublin Core.
  • Dodatkowo możesz uzyskać informacje o programie Photoshop za pomocą metody getPhotoshop.

Poniższy kod źródłowy pokazuje, jak uzyskać podstawowe informacje XMP, DCMI i Photoshop w Javie.

// Wyodrębnij dane Podstawowy XMP, DublinCore i Photoshop z obrazów heic i heif w Javie
Metadata metadata = new Metadata("image.heic");
IXmp root = (IXmp) metadata.getRootPackage();

if (root.getXmpPackage() != null) {
    // Podstawowy 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());
	// ...
    }
    // DublinPodstawowe informacje
    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());
	// ...
    }
    // Informacje o Photoshopie
    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());
	// ...
    }
}

Podobnie istnieje wiele metod ustawiających do ustawiania lub aktualizowania różnych właściwości XMP. Możesz nawet podać własną parę klucz-wartość, aby ustawić niestandardową właściwość pakietu XMP.

Usuń metadane EXIF i XMP obrazów HEIC / HEIF w Javie

Możesz po prostu ustawić odpowiedni pakiet EXIF lub pakiet XMP na wartość null, aby usunąć wszystkie właściwości metadanych.

Poniższy kod usuwa dane EXIF z obrazów HEIC.

try (Metadata metadata = new Metadata("image.heic")) {
	IExif root = (IExif) metadata.getRootPackage();
	root.setExifPackage(null);
	metadata.save("no-exif-image.heic");
}

Poniższy kod usuwa dane XMP z obrazów HEIC.

try (Metadata metadata = new Metadata("image.heic")) {
	IXmp root = (IXmp) metadata.getRootPackage();
	root.setXmpPackage(null);
	metadata.save("no-xmp-image.heic");
}

Wniosek

Podsumowując, nauczyliśmy się wyodrębniać, aktualizować, usuwać metadane EXIF i XMP z obrazów HEIF/HEIC w Javie. Ponadto widziałeś, jak uzyskać informacje IFD i GPS z tych obrazów. Teraz możesz łatwo uzyskać te informacje, a także tworzyć własne aplikacje, takie jak GroupDocs.Metadata App Product Family, aby zautomatyzować informacje o metadanych.

Więcej informacji, opcji i przykładów można znaleźć w repozytorium documentation i GitHub. W przypadku dalszych pytań skontaktuj się z nami za pośrednictwem pomocy technicznej forum.

Zobacz też