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
- Metadata Java API dla danych EXIF, XMP
- Odczyt danych EXIF obrazów HEIC/HEIF
- Odczytywanie danych XMP obrazów HEIC/HEIF
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.