HEIC adalah singkatan dari High-Efficiency Image Container. Ini adalah ekstensi file untuk gambar yang diambil untuk beberapa perangkat apel. Ini adalah wadah yang dapat berisi gambar HEIF Format Gambar Efisiensi Tinggi. Pada artikel ini, kita akan membahas cara mengekstrak, memperbarui, dan menghapus metadata EXIF dan XMP dari gambar HEIF/HEIC dalam aplikasi Java.

EXIF, Format File Gambar yang Dapat Ditukar adalah standar yang menentukan cara menyimpan properti metadata dalam format gambar dan audio yang paling umum. XMP adalah standar metadata berbasis XML, yang dapat menyimpan kumpulan properti metadata apa pun sebagai pasangan nama/nilai.

Topik-topik berikut dibahas di bawah ini

Java API untuk Metadata EXIF dan XMP

GroupDocs.Metadata menyediakan API manipulasi metadata untuk aplikasi Java Anda. API memungkinkan untuk membaca, memperbarui, menambah, membersihkan/menghapus, dan melintasi fitur untuk banyak format file. Ini mendukung berbagai standar metadata seperti EXIF, IPTC, dan XMP. Dokumen pengolah kata, spreadsheet, presentasi, pesan email, eBuku, gambar, gambar AutoCAD, file audio dan video, torrent, adalah beberapa format dokumen yang didukung. Lebih tepatnya, Anda dapat mengunjungi dokumentasi untuk daftar lengkap format file yang didukung untuk manipulasi metadata.

Unduh dan Konfigurasi

Dapatkan pustaka metadata dari bagian unduhan. Untuk aplikasi Java berbasis Maven Anda, cukup tambahkan konfigurasi pom.xml berikut. Setelah itu, Anda dapat mencoba contoh dari artikel ini juga contoh lainnya yang tersedia di GitHub. Untuk detailnya, Anda dapat mengunjungi Referensi 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>

Baca data EXIF Gambar HEIF / HEIC di Java

Berikut adalah langkah-langkah untuk membaca dan mengekstrak data EXIF gambar HEIC dan HEIF.

  • Muat gambar HEIF atau HEIC menggunakan kelas Metadata.
  • Dapatkan paket root.
  • Ambil paket EXIF dari paket root.
  • Dari paket EXIF, Anda dapat melintasi properti data EXIF.
  • Selanjutnya, Anda bisa mendapatkan informasi IFD (Image File Directory) dan GPS dari paket EXIF.

Kode berikut menunjukkan cara mendapatkan data EXIF, IFD, dan informasi metadata GPS dari gambar HEIC menggunakan Java.

// Baca EXIF, EXIF IFD, EXIF Paket GPS gambar HEIF / HEIC di Java
Metadata metadata = new Metadata("image.heic");
IExif root = (IExif) metadata.getRootPackage();
if (root.getExifPackage() != null) {
    String pattern = "%s : %s";
    // Dapatkan informasi Paket EXIF
    for (TiffTag tag : root.getExifPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // Dapatkan Informasi Paket IFD EXIF
    for (TiffTag tag : root.getExifPackage().getExifIfdPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // Dapatkan informasi GPS
    for (TiffTag tag : root.getExifPackage().getGpsPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
}

Membaca data XMP Gambar HEIC / HEIF di Java

Langkah-langkah berikut membaca metadata XMP dari gambar HEIC atau HEIF.

  • Muat gambar HEIF atau HEIC menggunakan kelas Metadata.
  • Dapatkan paket root menggunakan metode getRootPackage.
  • Dari paket root, Anda bisa mendapatkan informasi dasar XMP.
  • Selanjutnya, Anda bisa mendapatkan informasi DCMI Dublin Core.
  • Selain itu, Anda bisa mendapatkan informasi Photoshop menggunakan metode getPhotoshop.

Kode sumber berikut menunjukkan cara mendapatkan informasi dasar XMP, DCMI, dan Photoshop di Java.

// Ekstrak data Dasar XMP, DublinCore, dan Photoshop dari gambar heic dan heif di Java
Metadata metadata = new Metadata("image.heic");
IXmp root = (IXmp) metadata.getRootPackage();

if (root.getXmpPackage() != null) {
    // Dasar 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());
	// ...
    }
    // Informasi 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());
	// ...
    }
    // Informasi 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());
	// ...
    }
}

Demikian pula, ada banyak metode penyetel untuk menyetel atau memperbarui properti XMP yang berbeda. Anda bahkan dapat memberikan key-value pair Anda sendiri untuk mengatur properti paket XMP khusus.

Hapus Metadata EXIF dan XMP dari Gambar HEIC/HEIF di Java

Anda cukup menyetel paket EXIF atau paket XMP masing-masing ke null untuk menghapus semua properti metadata.

Kode berikut menghapus data EXIF gambar HEIC.

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

Kode berikut menghapus data XMP dari gambar HEIC.

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

Kesimpulan

Singkatnya, kami telah belajar mengekstrak, memperbarui, menghapus metadata EXIF dan XMP dari gambar HEIF/HEIC di Java. Selanjutnya, Anda telah melihat cara mendapatkan informasi IFD dan GPS dari gambar-gambar ini. Sekarang Anda dapat dengan mudah mendapatkan informasi ini dan juga terus membangun aplikasi Anda sendiri seperti GroupDocs.Metadata App Product Family untuk mengotomatiskan informasi metadata.

Untuk informasi lebih lanjut, opsi, dan contoh, Anda dapat mengunjungi dokumentasi dan repositori GitHub. Untuk pertanyaan lebih lanjut, hubungi kami di support forum.

Lihat juga