Hol tárolódik az EXIF-adat egy fotóban? (JPEG, PNG, HEIC)
Hol él valójában az EXIF egy fotófájl belsejében? Az APP1 fejléc, az IFD-fa, a bájtoffszetek, és hogyan tárolja mindezt a JPEG, HEIC, PNG, TIFF és WebP.
Gyors válasz: Az EXIF magában a képfájlban tárolódik, nem egy különálló kísérőfájlban. Egy JPEG-ben az APP1 marker szegmensben él, egy fejlécblokkban, amely a fájl eleje közelében a 0xFFE1 bájtokkal kezdődik, a címkékkel belül TIFF/IFD-faként elrendezve (IFD0, egy Exif al-IFD és egy GPS IFD). A HEIC-ben ugyanezek a címkék a konténer metaadat-dobozaiban ülnek, a PNG-ben egy eXIf chunkban élhetnek, a TIFF pedig natívan tárolja őket. Mivel az adat be van ágyazva, a fotóval utazik, valahányszor másolod vagy elküldöd. Húzz bármilyen fotót az EXIF-megjelenítőnkbe, hogy lásd, mi van benne. Semmi sem töltődik fel.
Az emberek gyakran azt feltételezik, hogy a metaadat egy rejtett adatbázisban él a telefonjukon, vagy egy kis fájlban a fotó mellett. Nem így van. A "mikor, hol és hogyan" közvetlenül a képfájl bájtjaiba van írva, egy fenntartott területen az eleje közelében. Ez az útmutató elmagyarázza, hol van ez a terület, és mi történik, amikor szerkeszted vagy megosztod a fotót.
A rövid változat: a fájlban van, a tetejéhez közel
Nyiss meg bármilyen JPEG-et frissen a kamerából, és nézd meg az első néhány száz bájtot. A kép kezdetét jelző marker (0xFFD8) után az egyik első dolog, amibe belefutsz, az APP1 marker szegmens, amely a teljes EXIF-blokkot tartja. A tömörített pixelek utána jönnek. Tehát egy tipikus kamera-JPEG így fut: 0xFFD8 kezdőmarker, a 0xFFE1 APP1 marker, amely az EXIF-et tartja, opcionális fejlécek (APP2 ICC-profil, APP13 IPTC, XMP), a pixeladat, majd a 0xFFD9 zárómarker. Mivel az EXIF egy fejlécben ül a tetejéhez közel, a pixelektől elkülönítve, egy tiszta EXIF-szerkesztés nem tömöríti újra a képet, az eszköz csak a fejlécterületet írja át.
Az IFD-fa: IFD0, Exif al-IFD, GPS IFD
Az APP1 szegmens a 0xFFE1 markerrel, egy kétbájtos hosszal és az Exif\0\0 azonosítóval nyit. Közvetlenül ezután a hasznos teher egy apró TIFF-fejléccel kezdődik: az EXIF belsőleg egy kis TIFF-fájl, amely a JPEG-be van ágyazva. Ez a fejléc deklarálja a bájtsorrendet (II little-endian vagy MM big-endian) és egy offszetet a címkék első könyvtárához.
Innentől a címkék IFD-k (Image File Directory-k) fájaként vannak szervezve, nem egyetlen lapos listaként. Mindegyiknek megvan a maga feladata:
- IFD0 (a "nulladik" vagy "TIFF" könyvtár): kamera- és képszintű mezők, mint Make, Model, Software, Orientation és Copyright. Két mutatócímkét is tart, amelyek az alábbi alkönyvtárakhoz vezetnek.
- Exif al-IFD: felvételkori technikai adatok. DateTimeOriginal, expozíciós beállítások, objektív, ISO, színtér.
- GPS IFD: szélesség, hosszúság, magasság és GPS-ből származó időbélyegek, csak akkor jelen, ha helyszínt rögzítettek.
- IFD1 (az "első" könyvtár): egy beágyazott bélyegkép, amelyet a kamera generált.
Egy olvasó bejárja a fát: kezd a TIFF-fejléccel, ugrik az IFD0-ra, követi az Exif-mutatót a felvételi beállításokért, követi a GPS-mutatót a helyszínért. Az EXIF-megjelenítőnk pontosan ezt teszi, és minden könyvtárat a saját táblázatában jelenít meg. Az EXIF-címkereferencia az egyes mezők teljes szótára. A négy bájtba beleférő értékek a címkebejegyzésen belül ülnek, a nagyobbak, mint egy GPS-koordináta, a szegmens máshol tárolódnak, és a bejegyzés egy hozzájuk vezető bájtoffszetet tart.
Hogyan tárolják más formátumok ugyanezeket a címkéket
Az EXIF-címkék nagyrészt azonosak a formátumok között. Ami eltér, az a konténer, amelybe a címkék bekerülnek.
- JPEG / JPG: a fentebb leírt APP1 marker szegmens.
- TIFF: natívan tárolja az EXIF-et. Egy TIFF-fájl maga IFD-k szerkezete, így az EXIF nincs ráerőszakolva, hanem az alapformátum része. A JPEG EXIF-je ennek a TIFF-elrendezésnek a kölcsönvett másolata.
- HEIC: az iPhone alapértelmezett formátuma az iOS 11 óta. A HEIF-konténere egymásba ágyazott "dobozokból" épül, és az EXIF-címkék egy elem-metaadat dobozban élnek, nem JPEG-stílusú markerben. Ugyanazok a címkék, más polcozás.
- PNG: hordozhat EXIF-et egy dedikált
eXIfchunkban, az egyszerűbb eszközök néhatEXtvagyiTXtszöveges chunkokat használnak helyette. Sok webre exportált PNG egyáltalán nem hordoz semmit. - WebP: az EXIF-et egy
EXIFchunkban tárolja a RIFF-konténerén belül.
A címkereferencia részletesen lefedi a formátumonkénti szerkesztési kikötéseket.
Miért számít a "beágyazott": a metaadat a fájllal utazik
Mivel az EXIF a fájlon belül él, mindenhová követi a fotót, ahova a fájl megy. Másold a JPEG-et egy USB-stickre, csatold egy e-mailhez, vagy húzd egy megosztott mappába, és a GPS-koordináták és a felvételi idő vele jönnek. Pontosan ezért olyan hasznos a metaadat bizonyítékként, és olyan kockázatos az adatvédelem szempontjából: a bizonyíték és a szivárgás is bele van sütve.
Ez magyarázza azt is, miért nem egysoros törlés az EXIF eltávolítása. A címkék bele vannak szőve a fájl fejlécszerkezetébe, így az eltávolításuk azt jelenti, hogy újraírjuk a fájlt azon terület nélkül. Az EXIF-eltávolítónk ezt a böngésződben végzi.
Mi történik, amikor szerkesztesz, képernyőképet készítesz vagy feltöltesz
Mivel az EXIF a fájl része, az, hogy mi marad meg, attól függ, hogy a fájl újrakódolódik-e:
- Másolás, áthelyezés, átnevezés: a bájtok változatlanok, így az EXIF megmarad.
- Vágás, forgatás, könnyű szerkesztések: a legtöbb szerkesztő megtartja a blokkot, és csak a méret- és tájolási címkéket frissíti. Néhány újraírja, ellenőrizd utána a megjelenítővel.
- Képernyőkép: a képernyőkép egy vadonatúj kép a saját minimális EXIF-jével, és az eredeti kamera- vagy GPS-adatainak egyike sem. Gyakorlatilag egy metaadat-törlés.
- Feltöltés közösségi platformokra: az Instagram, Facebook, X és WhatsApp feltöltéskor eltávolítja az EXIF-et az újrakódolással. A fájlmegosztó eszközök, mint az e-mail, a Dropbox és az AirDrop megtartják.
Annak nagyobb képéhez, hogy mit rögzít az EXIF, és miért ellenőrzik az emberek, lásd: mi az EXIF-adat.
GYIK
Egy különálló fájlban tárolódik az EXIF a fotó mellett? Nem, magában a képfájlban van beágyazva. (Néhány profi RAW-munkafolyamat .xmp kísérőfájlokat használ, de a szabványos EXIF egy JPEG-ben, HEIC-ben, PNG-ben vagy TIFF-ben a képen belül él.)
Mi a különbség az APP1 blokk és az IFD-k között? Az APP1 a JPEG-rekesz, amely az EXIF-et tartja. Az IFD-k (IFD0, Exif al-IFD, GPS IFD) a könyvtárfa azon a rekeszen belül.
Összegzés
Az EXIF nem egy rejtett alkalmazás-adatbázisban vagy egy kísérőfájlban tárolódik. A képbe van beágyazva: egy JPEG-ben ez az APP1 marker szegmenst jelenti a tetejéhez közel, TIFF/IFD-faként strukturálva (IFD0, Exif al-IFD, GPS IFD). A HEIC, PNG, WebP és TIFF ugyanezeket a címkéket a saját konténereikben tárolják. Mivel bele van sütve, a metaadat minden másolattal utazik.
Hogy lásd, hol él a fotód metaadata: EXIF-megjelenítő. Megosztás előtti eltávolításához: EXIF-eltávolító. Minden címke jelentéséhez: EXIF-címkereferencia. Minden a böngésződben, semmi sem töltődik fel.
Próbáld ki az eszközöket
Bélyegezz egy fotót közvetlenül a böngészőben, vagy telepítsd az iOS-appot, hogy élő fotókat készíts GPS-szel és atomórával.