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:
- EXIF verilerini ayıklayın - EXIF Veri Görüntüleyici
- Resimlerden tüm EXIF etiketlerini çıkarın
- EXIF özelliklerini güncelleyin
- EXIF meta verilerini kaldır
Java Metadata Manipülasyon Kitaplığı
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.
- 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;
- setTelif Hakkı() - to set updated copyrights information.
- setImageDescription() - to set description of the image.
- 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
- Belgeler
- Kaynak kodu örnekleri. Java | .NET
- GroupDocs.Metadata – Meta Veri Yönetimi Çözümü
Daha fazla konuşalım @ Ücretsiz Destek Forumu.