HEIC, Yüksek Verimli Görüntü Kabı anlamına gelir. Bazı apple cihazları için yakalanan görüntülerin dosya uzantısıdır. Yüksek Verimli Görüntü Formatında HEIF görüntüleri içerebilen bir kapsayıcıdır. Bu yazıda, Java uygulamalarında HEIF/HEIC görüntülerinin EXIF ve XMP meta verilerinin nasıl çıkarılacağını, güncelleneceğini ve kaldırılacağını tartışacağız.

EXIF, Değiştirilebilir Görüntü Dosyası Biçimi, meta veri özelliklerinin en yaygın görüntü ve ses biçimlerinde nasıl saklanacağını tanımlayan standarttır. XMP, herhangi bir meta veri özelliği kümesini ad/değer çiftleri olarak depolayabilen, XML tabanlı bir meta veri standardıdır.

Aşağıdaki konular aşağıda ele alınmıştır

EXIF ve XMP Meta Verileri için Java API

GroupDocs.Metadata, Java uygulamalarınız için meta veri işleme API’sini sağlar. API, birçok dosya biçimi için özelliklerin okunmasına, güncellenmesine, eklenmesine, temizlenmesine/kaldırılmasına ve geçiş yapılmasına izin verir. EXIF, IPTC ve XMP gibi çeşitli meta veri standartlarını destekler. Kelime işlem belgeleri, elektronik tablolar, sunumlar, e-posta mesajları, e-Kitaplar, resimler, AutoCAD çizimleri, ses ve video dosyaları, torrentler desteklenen belge biçimleri arasındadır. Daha kesin bir ifadeyle, [meta veri işleme için desteklenen dosya biçimlerinin] tam listesi için belgeleri ziyaret edebilirsiniz]6.

İndirin ve Yapılandırın

İndirilenler bölümünden meta veri kitaplığını edinin. Maven tabanlı Java uygulamanız için aşağıdaki pom.xml yapılandırmasını eklemeniz yeterlidir. Bundan sonra, bu makalenin örneklerini ve GitHub‘da bulunan daha birçok örneği deneyebilirsiniz. Ayrıntılar için API Referansı’nı ziyaret edebilirsiniz.

<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>

Java’da HEIF / HEIC Görüntülerinin EXIF verilerini okuyun

HEIC ve HEIF görüntülerinin EXIF verilerini okumak ve çıkarmak için adımlar aşağıdadır.

  • Metadata sınıfını kullanarak HEIF veya HEIC görüntüsünü yükleyin.
  • Kök paketi alın.
  • EXIF paketini kök paketten alın.
  • EXIF paketinden, EXIF veri özellikleri arasında geçiş yapabilirsiniz.
  • Ayrıca EXIF paketinden IFD (Image File Directory) ve GPS bilgilerini alabilirsiniz.

Aşağıdaki kod, Java kullanarak HEIC görüntüsünün EXIF verilerinin, IFD ve GPS meta veri bilgilerinin nasıl alınacağını gösterir.

// Java'da HEIF / HEIC görüntülerinin EXIF, EXIF IFD, EXIF GPS Paketini okuyun
Metadata metadata = new Metadata("image.heic");
IExif root = (IExif) metadata.getRootPackage();
if (root.getExifPackage() != null) {
    String pattern = "%s : %s";
    // EXIF Paketi bilgilerini alın
    for (TiffTag tag : root.getExifPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // EXIF IFD Paket Bilgilerini Alın
    for (TiffTag tag : root.getExifPackage().getExifIfdPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
    // GPS bilgilerini al
    for (TiffTag tag : root.getExifPackage().getGpsPackage().toList()) {
        System.out.println(String.format(pattern, tag.getName(), tag.getInterpretedValue()));
    }
}

Java’da HEIC / HEIF Görüntülerinin XMP verilerini okuyun

Aşağıdaki adımlar, HEIC veya HEIF görüntülerinin XMP meta verilerini okur.

  • Metadata sınıfını kullanarak HEIF veya HEIC görüntüsünü yükleyin.
  • getRootPackage yöntemini kullanarak kök paketi alın.
  • Kök paketten, XMP temel bilgilerini alabilirsiniz.
  • Ayrıca, DCMI Dublin Core bilgilerini alabilirsiniz.
  • Ek olarak, getPhotoshop yöntemini kullanarak Photoshop bilgilerini alabilirsiniz.

Aşağıdaki kaynak kodu, Java’da XMP temel, DCMI ve Photoshop bilgilerinin nasıl alınacağını gösterir.

// Java'daki heic ve heif görüntülerinin XMP Temel, DublinCore ve Photoshop verilerini ayıklayın
Metadata metadata = new Metadata("image.heic");
IXmp root = (IXmp) metadata.getRootPackage();

if (root.getXmpPackage() != null) {
    // XMP Temel    
    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());
	// ...
    }
    // DublinAna bilgi
    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());
	// ...
    }
    // Photoshop Bilgileri
    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());
	// ...
    }
}

Aynı şekilde, farklı XMP özelliklerini ayarlamak veya güncellemek için birçok ayarlayıcı yöntem vardır. Özel XMP paketi özelliğini ayarlamak için kendi anahtar/değer çiftinizi bile sağlayabilirsiniz.

Java’daki HEIC/HEIF Görüntülerinin EXIF ve XMP Meta Verilerini Kaldırma

Tüm meta veri özelliklerini kaldırmak için ilgili EXIF paketini veya XMP paketini null olarak ayarlayabilirsiniz.

Aşağıdaki kod, HEIC görüntülerinin EXIF verilerini kaldırır.

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

Aşağıdaki kod, HEIC görüntülerinin XMP verilerini kaldırır.

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

Çözüm

Özetlemek gerekirse, Java’daki HEIF/HEIC görüntülerinden EXIF ve XMP meta verilerini çıkarmayı, güncellemeyi, kaldırmayı öğrendik. Ayrıca bu görsellerden IFD ve GPS bilgilerinin nasıl alındığını görmüş oldunuz. Artık bu bilgileri kolayca alabilir ve meta veri bilgilerini otomatikleştirmek için GroupDocs.Metadata Uygulama Ürün Ailesi gibi kendi uygulamalarınızı oluşturmaya devam edebilirsiniz.

Daha fazla bilgi, seçenek ve örnek için dokümantasyon ve GitHub deposunu ziyaret edebilirsiniz. Daha fazla soru için destek forum üzerinden bize ulaşın.

Ayrıca bakınız