Bir Fotoğrafta EXIF Verisi Nerede Saklanır? (JPEG, PNG, HEIC)
EXIF aslında bir fotoğraf dosyasının içinde nerede yaşar? APP1 başlığı, IFD ağacı, bayt ofsetleri ve JPEG, HEIC, PNG, TIFF ile WebP'nin her birinin bunu nasıl sakladığı.
Hızlı yanıt: EXIF, ayrı bir yan dosyada değil, görüntü dosyasının kendi içinde saklanır. Bir JPEG'de APP1 işaret segmentinde yaşar; bu, dosyanın başına yakın yerde 0xFFE1 baytlarıyla başlayan bir başlık bloğudur ve etiketler içeride bir TIFF/IFD ağacı olarak düzenlenir (IFD0, bir Exif alt IFD'si ve bir GPS IFD'si). HEIC'te aynı etiketler container'ın üst veri kutularında oturur; PNG'de bir eXIf yığınında yaşayabilirler; TIFF ise onları doğal olarak saklar. Veri gömülü olduğu için, fotoğrafı kopyaladığın veya gönderdiğin her seferinde fotoğrafla birlikte yolculuk eder. İçeride ne olduğunu görmek için herhangi bir fotoğrafı EXIF Görüntüleyicimize bırak; hiçbir şey yüklenmez.
İnsanlar genellikle üst verinin telefonlarındaki gizli bir veri tabanında veya fotoğrafın yanındaki küçük bir dosyada yaşadığını varsayar. Öyle değil. "Ne zaman, nerede ve nasıl" bilgisi, görüntü dosyasının baytlarına, ön tarafa yakın ayrılmış bir bölgeye doğrudan yazılır. Bu kılavuz, o bölgenin nerede olduğunu ve fotoğrafı düzenlediğinde veya paylaştığında ne olduğunu açıklar.
Kısa versiyon: dosyada, üst tarafa yakın
Kameradan doğrudan gelen herhangi bir JPEG'i aç ve ilk birkaç yüz bayta bak. Görüntü başlangıcı işaretinin (0xFFD8) ardından ilk karşılaştığın şeylerden biri, tüm EXIF bloğunu tutan APP1 işaret segmentidir. Sıkıştırılmış pikseller bundan sonra gelir. Yani tipik bir kamera JPEG'i şöyle ilerler: 0xFFD8 başlangıç işareti, EXIF'i tutan 0xFFE1 APP1 işareti, isteğe bağlı başlıklar (APP2 ICC profili, APP13 IPTC, XMP), piksel verisi, ardından 0xFFD9 bitiş işareti. EXIF, piksellerden ayrı olarak üst tarafa yakın bir başlıkta oturduğu için, temiz bir EXIF düzenlemesi görüntüyü yeniden sıkıştırmaz; araç yalnızca başlık bölgesini yeniden yazar.
IFD ağacı: IFD0, Exif alt IFD'si, GPS IFD'si
APP1 segmenti 0xFFE1, iki baytlık bir uzunluk ve Exif\0\0 tanımlayıcısıyla açılır. Hemen ardından yük, küçük bir TIFF başlığı ile başlar: EXIF, içsel olarak JPEG'in içine gömülmüş küçük bir TIFF dosyasıdır. O başlık, bayt sırasını (II little-endian veya MM big-endian) ve ilk etiket dizinine bir ofseti bildirir.
Oradan etiketler, tek bir düz liste değil, bir IFD (Image File Directory) ağacı olarak düzenlenir. Her birinin bir görevi vardır:
- IFD0 ("0'ıncı" veya "TIFF" dizini): Make, Model, Software, Orientation ve Copyright gibi kamera ve görüntü düzeyindeki alanlar. Ayrıca aşağıdaki alt dizinlere giden iki işaretçi etiketi tutar.
- Exif alt IFD'si: yakalama anına ait teknik veri. DateTimeOriginal, pozlama ayarları, lens, ISO, renk uzayı.
- GPS IFD'si: enlem, boylam, yükseklik ve GPS'ten türetilen zaman damgaları; yalnızca bir konum kaydedildiğinde bulunur.
- IFD1 ("1'inci" dizin): kameranın oluşturduğu gömülü bir küçük resim.
Bir okuyucu ağacı dolaşır: TIFF başlığında başla, IFD0'a atla, yakalama ayarları için Exif işaretçisini izle, konum için GPS işaretçisini izle. EXIF Görüntüleyicimiz tam olarak bunu yapar ve her dizini kendi tablosunda gösterir; EXIF etiket referansı ise her alanın tam sözlüğüdür. Dört bayta sığan değerler etiket girdisinde satır içinde oturur; bir GPS koordinatı gibi daha büyük olanlar segmentte başka bir yerde saklanır ve girdi onlara bir bayt ofseti tutar.
Diğer formatlar aynı etiketleri nasıl saklar
EXIF etiketleri formatlar arasında büyük ölçüde aynıdır. Farklı olan, etiketlerin sıkıştırıldığı container'dır.
- JPEG / JPG: yukarıda açıklanan APP1 işaret segmenti.
- TIFF: EXIF'i doğal olarak saklar. Bir TIFF dosyası IFD'lerden oluşan bir yapı olduğundan, EXIF cıvatalanmış değildir, temel formatın bir parçasıdır. JPEG'in EXIF'i bu TIFF düzeninin ödünç alınmış bir kopyasıdır.
- HEIC: iOS 11'den beri iPhone varsayılanı. HEIF container'ı iç içe geçmiş "kutulardan" inşa edilir ve EXIF etiketleri bir JPEG tarzı işaret yerine bir öğe üst verisi kutusunda yaşar. Aynı etiketler, farklı raflama.
- PNG: EXIF'i özel bir
eXIfyığınında taşıyabilir; daha basit araçlar bazen onun yerinetEXtveyaiTXtmetin yığınları kullanır. Web için dışa aktarılan birçok PNG hiç taşımaz. - WebP: EXIF'i RIFF container'ı içindeki bir
EXIFyığınında saklar.
Etiket referansı, her formata özgü düzenleme uyarılarını ayrıntılı olarak ele alır.
"Gömülü" neden önemli: üst veri dosyayla birlikte yolculuk eder
EXIF dosyanın içinde yaşadığı için, dosya nereye giderse fotoğrafı her yere izler. JPEG'i bir USB belleğe kopyala, bir e-postaya ekle ya da paylaşılan bir klasöre bırak; GPS koordinatları ve yakalama zamanı da birlikte gelir. Üst verinin kanıt için bu kadar faydalı ve gizlilik için bu kadar riskli olmasının nedeni tam olarak budur: hem kanıt hem de sızıntı içine işlenmiştir.
Bu, EXIF'i kaldırmanın neden tek satırlık bir silme olmadığını da açıklar. Etiketler dosyanın başlık yapısına dokunmuştur, bu yüzden onları silmek, o bölge olmadan dosyayı yeniden yazmak anlamına gelir. EXIF Kaldırıcımız bunu tarayıcında yapar.
Düzenlediğinde, ekran görüntüsü aldığında veya yüklediğinde ne olur
EXIF dosyanın bir parçası olduğu için, neyin hayatta kalacağı dosyanın yeniden kodlanıp kodlanmamasına bağlıdır:
- Kopyala, taşı, yeniden adlandır: baytlar değişmediği için EXIF korunur.
- Kırp, döndür, hafif düzenlemeler: çoğu editör bloğu korur ve yalnızca boyut ile yönelim etiketlerini günceller. Bazıları yeniden yazar; sonrasında görüntüleyici ile kontrol et.
- Ekran görüntüsü: bir ekran görüntüsü, kendi minimal EXIF'i olan ve orijinalin kamera veya GPS verisinin hiçbirini taşımayan bambaşka bir görüntüdür. Aslında bir üst veri silmesidir.
- Sosyal platformlara yükleme: Instagram, Facebook, X ve WhatsApp yüklemede yeniden kodlayarak EXIF'i siler. E-posta, Dropbox ve AirDrop gibi dosya paylaşım araçları onu korur.
EXIF'in neyi kaydettiğine ve insanların neden kontrol ettiğine dair daha geniş tablo için EXIF verisi nedir yazımıza bak.
SSS
EXIF, fotoğrafın yanındaki ayrı bir dosyada mı saklanır? Hayır, görüntü dosyasının kendi içine gömülüdür. (Bazı profesyonel RAW iş akışları .xmp yan dosyaları kullanır, ama bir JPEG, HEIC, PNG veya TIFF'teki standart EXIF görüntünün içinde yaşar.)
APP1 bloğu ile IFD'ler arasındaki fark nedir? APP1, EXIF'i tutan JPEG yuvasıdır. IFD'ler (IFD0, Exif alt IFD'si, GPS IFD'si) ise o yuvanın içindeki dizin ağacıdır.
Özetle
EXIF, gizli bir uygulama veri tabanında veya bir yan dosyada tutulmaz. Görüntüye gömülüdür: bir JPEG'de bu, üst tarafa yakın APP1 işaret segmenti anlamına gelir; bir TIFF/IFD ağacı (IFD0, Exif alt IFD'si, GPS IFD'si) olarak yapılandırılmıştır. HEIC, PNG, WebP ve TIFF aynı etiketleri kendi container'larında saklar. İçine işlenmiş olduğu için, üst veri her kopyayla birlikte yolculuk eder.
Fotoğrafının üst verisinin nerede yaşadığını görmek için: EXIF Görüntüleyici. Paylaşmadan önce silmek için: EXIF Kaldırıcı. Her etiketin anlamı için: EXIF etiket referansı. Hepsi tarayıcında, hiçbir şey yüklenmez.
Araçları dene
Şu anda tarayıcında bir fotoğrafı damgala ya da GPS ve atomik saatle canlı çekim için iOS uygulamasını yükle.