Τι είναι ένα αρχείο EXIF;
Το EXIF σημαίνει “Exchangeable Image File Format”, ο ορισμός που δόθηκε για πρώτη φορά από την Japan Camera Industry Association (JCIA) το 1985. Το πρότυπο διαχειρίζεται η Japan Electronics και Σύνδεσμος Βιομηχανιών Πληροφορικής (JEITA) από σήμερα. Το EXIF είναι ένα πρότυπο για τις προδιαγραφές των μορφών εικόνας και ήχου που χρησιμοποιούνται κυρίως από ψηφιακές φωτογραφικές μηχανές και σαρωτές.
Το πρότυπο EXIF περιλαμβάνει τις πληροφορίες επισήμανσης και μεταδεδομένων με το αρχείο εικόνας. Τα μεταδεδομένα μπορεί να περιέχουν πληροφορίες όπως μοντέλο κάμερας, ταχύτητα κλείστρου, Ημερομηνία και ώρα, διάφραγμα, κατασκευαστής, χρόνος έκθεσης, ανάλυση X, ανάλυση Υ κ.λπ. Κανονικά τα δεδομένα EXIF είναι κρυμμένα από προεπιλογή. Για να δείτε τα δεδομένα EXIF, πρέπει να επιλέξετε τις ιδιότητες προβολής στην εφαρμογή προβολής εικόνων. Τα μεταδεδομένα Exif μπορεί επίσης να περιλαμβάνουν μικρογραφίες μαζί με τεχνικά και κύρια δεδομένα εικόνας σε ένα μόνο αρχείο εικόνας.
Ιστορία και εκδόσεις
- Τον Οκτώβριο του 1995, η JEIDA δημιούργησε την Έκδοση 1. Σε αυτήν την έκδοση η JEIDA όρισε τη δομή, η οποία αποτελείται από μορφή δεδομένων εικόνας και πληροφορίες χαρακτηριστικών, και βασικές ετικέτες.
- Νοέμβριος 1997, παρουσιάστηκε η έκδοση 1.1 με τις περισσότερες ετικέτες από την έκδοση 1, αλλά προστέθηκαν επίσης διατάξεις για προαιρετικές πληροφορίες χαρακτηριστικών και λειτουργία μορφής.
- Ιούνιος 1998, Έκδοση 2 με χρωματικό χώρο sRGB, συμπιεσμένες μικρογραφίες και αρχεία ήχου.
- Δεκέμβριος 1998, Έκδοση 2.1 με βελτιωμένη αποθήκευση και πληροφορίες χαρακτηριστικών.
- Φεβρουάριος 2002, Έκδοση 2.2, βελτιωμένη έκδοση 2.1 με την προσθήκη φινιρίσματος εκτύπωσης.
- Σεπτέμβριος 2003, Έκδοση 2.21 με προαιρετικό χρωματικό χώρο γνωστό ως adobe RGB.
Μορφή αρχείου EXIF
Το EXIF χρησιμοποιεί τις ακόλουθες μορφές αρχείων με την προσθήκη συγκεκριμένων μεταδεδομένων.
- JPEG - διακριτός μετασχηματισμός συνημιτόνου (DCT) για συμπιεσμένα αρχεία εικόνας.
- TIFF Αναθ. 6.0 (RGB ή YCbCr) για μη συμπιεσμένα αρχεία εικόνας.
- RIFF WAV για αρχεία ήχου (γραμμικό PCM ή ITU-T G.711 μ-Law PCM για μη συμπιεσμένα δεδομένα ήχου και IMA-ADPCM για συμπιεσμένα δεδομένα ήχου).
Δείκτης που χρησιμοποιείται από το EXIF
Ο δείκτης 0xFFE0~~0xFFEF είναι “Σήμανση εφαρμογής”, που χρησιμοποιείται από την εφαρμογή χρήστη. Για παράδειγμα, παλαιότερες κάμερες digi χρησιμοποιούν JFIF (μορφή ανταλλαγής αρχείων JPEG) για την αποθήκευση εικόνων. Το JFIF χρησιμοποιεί τον δείκτη APP0 (0xFFE0) για την εισαγωγή δεδομένων διαμόρφωσης κάμερας digi και εικόνας μικρογραφίας. Επιπλέον, το EXIF χρησιμοποιεί επίσης έναν δείκτη εφαρμογής για την εισαγωγή δεδομένων, αλλά το EXIF χρησιμοποιεί τον δείκτη APP1 (0xFFE1) για να αποφύγει μια σύγκρουση με τη μορφή JFIF. Κάθε μορφή αρχείου EXIF ξεκινά από αυτήν τη μορφή.
Δείκτης SOI | Δείκτης APP1 | Δεδομένα APP1 | Άλλος δείκτης |
---|---|---|---|
FFD8 | FFE1 | SSSS 457869660000 TTTT…… | FFXX SSSS DDDD…… |
Ξεκινά από τον δείκτη SOI (0xFFD8), επομένως είναι αρχείο JPEG. Στη συνέχεια ακολουθεί αμέσως ο δείκτης APP1. Όλα τα δεδομένα του EXIF αποθηκεύονται σε αυτήν την περιοχή δεδομένων APP1. Το τμήμα του “SSSS” στον επάνω πίνακα σημαίνει το μέγεθος της περιοχής δεδομένων APP1 (περιοχή δεδομένων EXIF). Παρακαλώ σημειώστε ότι το μέγεθος “SSSS” περιλαμβάνει επίσης το μέγεθος του ίδιου του περιγραφέα. Μετά το “SSSS”, ξεκινούν τα δεδομένα APP1. Το πρώτο μέρος είναι ένα ειδικό στοιχείο για την αναγνώριση εάν EXIF ή όχι, χρησιμοποιείται ο χαρακτήρας ASCII “EXIF” και 2 byte 0x00. Μετά την περιοχή APP1 Marker, ακολουθούν οι άλλοι δείκτες JPEG.
Δομή δεδομένων Exif
Μια πρόχειρη δομή δεδομένων EXIF (APP1) φαίνεται όπως παρακάτω. Όπως συζητήθηκε παραπάνω, τα δεδομένα EXIF ξεκινούν από τον χαρακτήρα ASCII “EXIF” και 2 byte 0x00, και στη συνέχεια ακολουθούν τα δεδομένα EXIF. Το EXIF χρησιμοποιεί μορφή TIFF για την αποθήκευση δεδομένων.
FFE1 | Δείκτης APP1 |
---|---|
SSSS | APP1 Δεδομένα |
45786966 0000 | Επικεφαλίδα Exif |
49492A00 08000000 | Κεφαλίδα TIFF |
ΧΧΧΧ. . . . | IFD0 (κύρια εικόνα) |
LLLLLLLL | Σύνδεσμος προς IFD1 |
ΧΧΧΧ. . . . | Περιοχή δεδομένων του IFD0 |
ΧΧΧΧ. . . . | Exif SubIFD |
00000000 | Τέλος συνδέσμου |
ΧΧΧΧ. . . . | Περιοχή δεδομένων του Exif SubIFD |
ΧΧΧΧ. . . . | IFD1(μικρογραφία εικόνας) |
00000000 | Τέλος συνδέσμου |
ΧΧΧΧ. . . . | Περιοχή δεδομένων του IFD1 |
FFD8XXXX. . . XXXXFFD9 | Μικρογραφία εικόνας |
Κεφαλίδα TIFF
η κεφαλίδα αρχείου 8 byte TIFF περιέχει τις ακόλουθες πληροφορίες:
Bytes 0-1:
Η σειρά byte που χρησιμοποιείται στο αρχείο. Οι νόμιμες τιμές είναι:“II”(4949.H)“MM” (4D4D.H).
Στη μορφή «II», η σειρά byte είναι πάντα από το λιγότερο σημαντικό byte στο πιο σημαντικό byte, τόσο για ακέραιους αριθμούς 16-bit όσο και για 32-bit Αυτό ονομάζεται σειρά byte μικρής έντασης. Στη μορφή “MM”, η σειρά byte είναι πάντα από το πιο σημαντικό προς το λιγότερο σημαντικό, τόσο για ακέραιους αριθμούς 16-bit όσο και για 32-bit. Αυτό ονομάζεται σειρά byte big-endian.
Bytes 2-3:
Ένας αυθαίρετος αλλά προσεκτικά επιλεγμένος αριθμός (42) που προσδιορίζει περαιτέρω το αρχείο ως αρχείο TIFF. Η σειρά byte εξαρτάται από την τιμή των Byte 0-1.
Bytes 4-7:
Η μετατόπιση (σε byte) της πρώτης IFD. Ο κατάλογος μπορεί να βρίσκεται σε οποιαδήποτε θέση του αρχείου μετά την κεφαλίδα, αλλά πρέπει να ξεκινά από ένα όριο λέξης. Συγκεκριμένα, ένας Κατάλογος αρχείων εικόνας μπορεί να ακολουθεί τα δεδομένα εικόνας που περιγράφει. Οι αναγνώστες πρέπει να ακολουθούν τους δείκτες όπου κι αν οδηγούν. Ο όρος μετατόπιση byte χρησιμοποιείται πάντα σε αυτό το έγγραφο για να αναφέρεται σε μια θέση σε σχέση με την αρχή του αρχείου TIFF. Το πρώτο byte του αρχείου έχει μετατόπιση 0.
Κατάλογος αρχείων εικόνας
Ένα IFD περιέχει πληροφορίες για την εικόνα καθώς και δείκτες στα πραγματικά δεδομένα εικόνας. Αποτελείται από μια μέτρηση 2 byte του αριθμού των καταχωρήσεων καταλόγου (δηλ. τον αριθμό των πεδίων), ακολουθούμενη από μια ακολουθία καταχωρήσεων πεδίων 12 byte , ακολουθούμενη από μια μετατόπιση 4 byte του επόμενου IFD (ή 0, εάν δεν υπάρχει). Πρέπει να υπάρχει τουλάχιστον 1 IFD σε ένα αρχείο TIFF και κάθε IFD πρέπει να έχει τουλάχιστον μία καταχώρηση.
Καταχώρηση IFD
Κάθε Καταχώρηση IFD 12 byte έχει την ακόλουθη μορφή.
Bytes | Περιγραφή |
---|---|
0-1 | Η ετικέτα που προσδιορίζει το πεδίο |
2-3 | Ο τύπος πεδίου |
4-7 | Αριθμός του υποδεικνυόμενου τύπου |
8-11 | Η μετατόπιση τιμής, η μετατόπιση αρχείου (σε byte) της τιμής για το πεδίο. Η τιμή αναμένεται να ξεκινά από ένα όριο λέξης. η αντίστοιχη μετατόπιση τιμής θα είναι επομένως ζυγός αριθμός. Αυτή η μετατόπιση αρχείου μπορεί να δείχνει οπουδήποτε στο αρχείο, ακόμα και μετά τα δεδομένα της εικόνας |
Ένα πεδίο TIFF είναι μια λογική οντότητα που αποτελείται από την ετικέτα TIFF και την τιμή της. Αυτή η λογική ιδέα υλοποιείται ως Καταχώριση IFD, συν την πραγματική τιμή εάν δεν ταιριάζει στο τμήμα τιμής/απόκλισης, τα τελευταία 4 byte της Καταχώρισης IFD. Οι όροι πεδίο TIFF και καταχώρηση IFD είναι εναλλάξιμοι στα περισσότερα περιβάλλοντα.
Μικρογραφία εικόνας
Η μορφή Exif περιέχει μικρογραφία της εικόνας (εκτός από το Ricoh RDC-300Z). Συνήθως βρίσκεται δίπλα στο IFD1. Υπάρχουν 3 μορφές για μικρογραφίες. Μορφή JPEG (το JPEG χρησιμοποιεί YCbCr), μορφή RGB TIFF, μορφή YCbCr TIFF.
Μικρογραφία μορφής JPEG
Εάν η τιμή της ετικέτας Compression(0x0103) στο IFD1 είναι ‘6’, η μορφή εικόνας μικρογραφίας είναι JPEG. Το μεγαλύτερο μέρος της εικόνας Exif χρησιμοποιεί μορφή JPEG για μικρογραφία. Σε αυτήν την περίπτωση, μπορείτε να λάβετε μετατόπιση της μικρογραφίας με ετικέτα JpegIFOffset(0x0201) στο IFD1, μέγεθος μικρογραφίας με ετικέτα JpegIFByteCount(0x0202). Η μορφή δεδομένων είναι συνηθισμένη μορφή JPEG, ξεκινά από 0xFFD8 και τελειώνει σε 0xFFD9. Φαίνεται ότι η μορφή JPEG και το μέγεθος 160x120 pixel συνιστώνται μορφή μικρογραφιών για Exif2.1 ή νεότερη έκδοση.
Μικρογραφία μορφής TIFF
Εάν η τιμή της ετικέτας Compression(0x0103) στο IFD1 είναι ‘1’, η μορφή εικόνας μικρογραφίας δεν είναι συμπίεση (ονομάζεται εικόνα TIFF). Το σημείο έναρξης των δεδομένων μικρογραφίας είναι η ετικέτα StripOffset(0x0111), το μέγεθος της μικρογραφίας είναι το άθροισμα της ετικέτας StripByteCounts(0x0117).