EXIF (Exchangeable Image File Format), esas olarak dijital kameralar ve tarayıcılar tarafından kullanılan görüntü ve ses formatlarını belirtmek için standarttır. EXIF verileri, yakalanan görüntü dosyasıyla ilgili etiketleme ve meta veri bilgilerini içerir. Meta veriler, kamera markası, modeli, deklanşör hızı, tarih ve saat, diyafram açıklığı, pozlama süresi, X çözünürlüğü, Y çözünürlüğü gibi bilgileri içerebilir. vb.

Resimlerinizin EXIF verilerini programlı olarak yönetmek, ayıklamak, güncellemek veya kaldırmak istiyorsanız bu makale tam size göre. Bu makale, Java’da EXIF verileriyle işlem yapmanın aşağıdaki yollarını kapsayacaktır:

Java Metadata Manipülasyon Kitaplığı

Meta veri Java API, GroupDocs tarafından

GroupDocs.Metadata for Java, kullanımı kolay bir meta veri yönetimi Java API’sidir. Yalnızca JPG, PNG veya WebP gibi görüntülerden meta veri çıkarma yeteneğine sahip değildir, aynı zamanda farklı seçeneklerle görüntülerden ve diğer belgelerden meta veri ekleyebilir, düzenleyebilir, güncelleyebilir ve kaldırabilir.

Bu makalede bu API’yi kullanıyorum, bu yüzden lütfen pom.xml dosyasına aşağıdaki yapılandırmaları ekleyerek indirdiğinizde veya Maven tabanlı uygulamalarınıza entegre ettiğinizden emin olun.

Depo ve Bağımlılık

<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>20.5</version>
    <classifier>javadoc</classifier>
</dependency>

EXIF Verilerini Java’daki Resimlerden Çıkarın - Meta Veri Görüntüleyici

Basit adımları izleyerek EXIF veri özelliklerini okuyabilirsiniz. Bu Eyfel Kulesi resminden EXIF verilerinin çıkarılmasıyla başlayalım. Örnek resim olarak bir JPG dosyası seçtim, ister PNG, WebP, BMP, GIF veya TIFF olsun, dosyalarınızdan herhangi birini kullanabilirsiniz.

EXIF Verileri için Eyfel Kulesi Resmi
  • Metadata sınıf yapıcısını kullanarak EXIF veri bilgilerini içeren görüntü kaynak dosyasını yükleyin.
  • getRootPackage() yöntemini çağırarak kök paketini alın.
  • Kök paketten, getExifPackage() yöntemini çağırarak EXIF paketini alın.
  • EXIF paketine sahip olduğunuzda, aşağıdaki Java kodu örneğinde gösterildiği gibi Marka, Model, Genişlik, Uzunluk, Tarih-Saat vb. gibi resim EXIF özelliklerini alabilirsiniz.
// Extract EXIF Data Package Information from image in Java
try (Metadata metadata = new Metadata("eiffel-tower.jpg")) {
	IExif root = (IExif) metadata.getRootPackage();
	if (root.getExifPackage() != null) {
		// Extract EXIF Package
		ExifPackage exifPackage = root.getExifPackage();
		System.out.println("Make : " + exifPackage.getMake());
		System.out.println("Model : " + exifPackage.getModel());
		System.out.println("Width : " + exifPackage.getImageWidth());
		System.out.println("Length : " + exifPackage.getImageLength());
		System.out.println("DateTime : " + exifPackage.getDateTime());					
	} 
}

İşte yukarıdaki kod sonucunda elde edeceğiniz EXIF bilgisi.

Make : NIKON CORPORATION
Model : NIKON D3000
Width : 640
Length : 424
DateTime : 2014:08:09 10:35:13

Daha fazla IFD (Görüntü Dosyası Dizini) ve GPS (Global Konumlandırma Sistemi) paket bilgisi için, EXIF paketinin ilgili yöntemlerini, yani getExifIfdPackage() veya getGpsPackage() çağırmanız yeterlidir. Bu paketlerden;

  • Görüntü yakalama cihazı seri numarası
  • Kamera Sahibi adı
  • kullanıcı yorumları
  • Rakım
  • Enlem
  • Boylam
  • vb.

IFD ve GPS bilgileriyle birlikte EXIF verilerini görüntülemek için yukarıdaki yönteminize ekleyebileceğiniz kod aşağıdadır.

// EXIF IFD Package
ExifIfdPackage exifIfdPackage = exifPackage.getExifIfdPackage();
System.out.println("BodySerialNumber : " + exifIfdPackage.getBodySerialNumber());
System.out.println("CameraOwnerName : " + exifIfdPackage.getCameraOwnerName());
System.out.println("UserComment : " + exifIfdPackage.getUserComment());
// EXIF GPS Information Package
ExifGpsPackage exifGpsPackage = exifPackage.getGpsPackage();
System.out.println("getAltitude : " + exifGpsPackage.getAltitude());
System.out.println("Latitude Ref : " + exifGpsPackage.getLatitudeRef());
System.out.println("LongitudeRef : " + exifGpsPackage.getLongitudeRef());

Java kullanarak Resimlerin Tüm EXIF Etiketlerini Okuyun

Herhangi bir görüntünün veya dosyanın tüm EXIF özelliklerini göstermek veya çıkarmak istiyorsanız, bunu yukarıdaki örneklere benzer adımlarla yapabilirsiniz:

  • Dosyayı Metadata oluşturucu ile yüklemeniz yeterlidir.
  • getRootPackage() yöntemini çağırarak EXIF kök paketini alın.
  • getExifPackage() yöntemini çağırarak EXIF paketini alın.
  • İstediğiniz ad-değer çiftlerini elde etmek için EXIF paketini yineleyin.
  • Benzer şekilde, IFD ve GPS paketlerini alın ve anahtarlarını ve değerlerini görüntüleyin.
try (Metadata metadata = new Metadata("eiffel-tower.jpg")) {
	IExif root = (IExif) metadata.getRootPackage();
	if (root.getExifPackage() != null) {
		String pattern = "%s = %s";
		// Reading all EXIF tags.
		for (TiffTag tag : root.getExifPackage().toList()) {
			System.out.println(String.format(pattern, tag.getName(), tag.getValue()));
		}
		// Extract all EXIF IFD tags.
		for (TiffTag tag : root.getExifPackage().getExifIfdPackage().toList()) {
			System.out.println(String.format(pattern, tag.getName(), tag.getValue()));
		}
		// Extract all EXIF GPS tags
		for (TiffTag tag : root.getExifPackage().getGpsPackage().toList()) {
			System.out.println(String.format(pattern, tag.getName(), tag.getValue()));
		}
	}
}

Java’da EXIF Özelliklerini Güncelleyin

Hatta herhangi bir görüntünün veya herhangi bir belgenin mevcut EXIF verilerini kolayca değiştirebilirsiniz. Adımlar basit:

EXIF Paketini Güncelle

  • getExifPackage() yöntemini çağırarak EXIF paketini alın.
  • Şunun gibi ayarlayıcı yöntemleri kullanın;
  • Benzer şekilde, Sanatçı, Marka, Model, Yazılım, Görüntü Genişliği ve Yüksekliği, Tarih, Saat vb. için değerleri ayarlayabilirsiniz.

EXIF IFD Paketini Güncelle

Tıpkı EXIF paketini günceller gibi, EXIF IFD ve GPS paketlerinin özelliklerini de güncelleyebilirsiniz. Değerli görüntü ve belgelerinizi ne kadar özelleştirebileceğinizi öğrenmek için lütfen ExifIfdPackage veya ExifGpsPackage sınıfını ziyaret edin.

// Update/Set new values in EXIF Data (EXIF Package and EXIF IFD Package).
try (Metadata metadata = new Metadata("eiffel-tower.jpg")) {
    IExif root = (IExif) metadata.getRootPackage();
    // Set the EXIF package if it's missing
    if (root.getExifPackage() == null) {
        root.setExifPackage(new ExifPackage());
    }
    ExifPackage exifPackage = root.getExifPackage();
    // Setting the desired values in EXIF Package and EXIF IFD Package.
    exifPackage.setCopyright("Copyright (C) 2011-2020 GroupDocs. All Rights Reserved.");
    exifPackage.setImageDescription("Eiffel Tower for EXIF");
    exifPackage.setSoftware("GroupDocs.Metadata");
    exifPackage.getExifIfdPackage().setBodySerialNumber("GD-2020");
    exifPackage.getExifIfdPackage().setCameraOwnerName("GroupDocs");
    exifPackage.getExifIfdPackage().setUserComment("Nice image captured in 2014");
    metadata.save("eiffel-tower-updated.jpg");
}

EXIF Meta Verilerini Java’daki Görüntülerden Kaldırma

EXIF paketini herhangi bir dosyadan kaldırmak istiyorsanız bu çok basittir, sadece kök paketin setExifPackage(null) öğesini çağırarak EXIF paketini null olarak ayarlayın.

// Removing the EXIF data from an image.
try (Metadata metadata = new Metadata("eiffel-tower.jpg")) {
    IExif root = (IExif) metadata.getRootPackage();
    root.setExifPackage(null);
    metadata.save("eiffel-tower-no-exif.jpg");
}

Desteklenen Görseller ve Diğer Formatlar

GroupDocs.Metadata tarafından şu anda desteklenen dosya biçimleri buradadır. Güncel bilgiler için her zaman belgeleri ziyaret edebilirsiniz.

Belge Türü Dosya Biçimleri
Resimler BMP, GIF, JPG, JPEG, JPE, JP2, PNG, DJVU, DWG, DXF, WebP, TIFF, PSD, EMF, WMF
Ses ve Video MP3, WAV, AVI, MOV / QT, FLV, ASF, DICOM

GroupDocs.Metadata hakkında daha fazlasını görün

Daha fazla konuşalım @ Ücretsiz Destek Forumu.

İlgili Makale