מהו קובץ EXIF?
EXIF מייצג “פורמט קובץ תמונה להחלפה”, ההגדרה שניתנה לראשונה על ידי איגוד תעשיית המצלמה של יפן (JCIA) בשנת 1985. התקן מנוהל על ידי Japan Electronics ו איגוד תעשיות טכנולוגיות המידע (JEITA) נכון להיום. EXIF הוא תקן למפרטים של פורמטים של תמונה וקול המשמשים בעיקר מצלמות וסורקים דיגיטליים.
תקן EXIF כולל את התיוג ומידע המטא נתונים עם קובץ התמונה. מטא נתונים יכולים להכיל מידע כמו דגם מצלמה, מהירות תריס, תאריך ושעה, צמצם, יצרן, זמן חשיפה, רזולוציית X, רזולוציית Y וכו’. בדרך כלל נתוני 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 Rev. 6.0 (RGB או YCbCr) עבור קובצי תמונה לא דחוסים.
- RIFF WAV עבור קובצי אודיו (ליניארי PCM או ITU-T G.711 μ-Law PCM עבור נתוני אודיו לא דחוסים, ו- IMA-ADPCM עבור נתוני אודיו דחוסים).
סמן בשימוש על ידי EXIF
הסמן 0xFFE0~~0xFFEF הוא “סמן יישומים”, המשמש את יישום המשתמש. לדוגמה, מצלמות דיגיטליות ישנות יותר משתמשות ב-JFIF (פורמט JPEG File Interchange) לאחסון תמונות. JFIF משתמש בסמן APP0 (0xFFE0) להכנסת נתוני תצורת מצלמת דיגיטל ותמונה ממוזערת. יתר על כן, EXIF משתמש גם ב- Application Marker להכנסת נתונים, אך EXIF משתמש ב- APP1 (0xFFE1) Marker כדי למנוע התנגשות עם פורמט JFIF. כל פורמט קובץ EXIF מתחיל מפורמט זה.
SOI Marker | APP1 Marker | APP1 Data | Andr Marker |
---|---|---|---|
FFD8 | FFE1 | SSSS 457869660000 TTTT…… | FFXX SSSS DDDD…… |
זה מתחיל מסמן SOI (0xFFD8), אז זה קובץ JPEG. ואז APP1 Marker עוקב מיד. כל הנתונים של EXIF מאוחסנים באזור הנתונים של APP1 זה. החלק של “SSSS” בטבלה העליונה פירושו גודל אזור הנתונים של APP1 (אזור הנתונים של EXIF). שימו לב שהגודל “SSSS” כולל גם את גודל המתאר עצמו. לאחר ה-SSSS, נתוני APP1 מתחילים. החלק הראשון הוא נתונים מיוחדים לזיהוי אם EXIF או לא, נעשה שימוש בתו ASCII “EXIF” ו-2 בתים של 0x00. אחרי אזור APP1 Marker, שאר סמני ה-JPEG עוקבים אחריו.
מבנה נתונים של Exif
מבנה גס של נתוני EXIF (APP1) מוצג להלן. כפי שנדון לעיל, נתוני EXIF מתחילים מהתו ASCII “EXIF” ו-2 בתים של 0x00, ולאחר מכן נתוני EXIF. EXIF משתמש בפורמט TIFF לאחסון נתונים.
FFE1 | סמן APP1 |
---|---|
SSSS | APP1 Data |
45786966 0000 | כותרת אקסיף |
49492A00 08000000 | כותרת TIFF |
XXXX. . . . | IFD0 (תמונה ראשית) |
LLLLLLLL | קישור ל-IFD1 |
XXXX. . . . | אזור נתונים של IFD0 |
XXXX. . . . | Exif SubIFD |
00000000 | סוף הקישור |
XXXX. . . . | אזור הנתונים של Exif SubIFD |
XXXX. . . . | IFD1(תמונה ממוזערת) |
00000000 | סוף הקישור |
XXXX. . . . | אזור הנתונים של IFD1 |
FFD8XXXX. . . XXXXFFD9 | תמונה ממוזערת |
כותרת TIFF
כותרת הקובץ בגודל 8 בתים TIFF מכילה את המידע הבא:
Bytes 0-1:
סדר הבתים בשימוש בקובץ. הערכים החוקיים הם:“II”(4949.H)“MM” (4D4D.H).
בפורמט “II”, סדר הבתים הוא תמיד מהבייט הכי פחות משמעותי לבייט המשמעותי ביותר, הן עבור מספרים שלמים של 16 סיביות והן עבור 32 סיביות. זה נקרא סדר בתים אנדיאן קטן. בפורמט “MM”, סדר בתים הוא תמיד מהמשמעותי ביותר לפחות משמעותי, עבור מספרים שלמים של 16 סיביות ו-32 סיביות. זה נקרא סדר בתים גדול-אנדיאן.
Bytes 2-3:
מספר שרירותי אך נבחר בקפידה (42) שמזהה עוד יותר את הקובץ כקובץ TIFF. סדר הבתים תלוי בערך של Bytes 0-1.
Bytes 4-7:
ההיסט (בבתים) של ה-IFD הראשון. הספרייה יכולה להיות בכל מיקום בקובץ אחרי הכותרת אבל חייבת להתחיל על גבול מילים. בפרט, ספריית קבצי תמונה עשויה לעקוב אחר נתוני התמונה שהיא מתארת. הקוראים חייבים לעקוב אחר המצביעים לכל מקום שהם עלולים להוביל. המונח היסט בתים משמש תמיד במסמך זה כדי להתייחס למיקום ביחס לתחילת קובץ ה-TIFF. לבייט הראשון של הקובץ יש היסט של 0.
ספריית קבצי תמונה
IFD מכיל מידע על התמונה וכן מצביעים לנתוני התמונה בפועל.. הוא מורכב מספירה של 2 בתים של מספר כניסות הספרייה (כלומר מספר השדות), ואחריה רצף של כניסות שדות של 12 בתים , ואחריו היסט של 4 בתים של ה-IFD הבא (או 0 אם אין). חייב להיות לפחות IFD 1 בקובץ TIFF ולכל IFD חייב להיות לפחות ערך אחד.
ערך IFD
כל ערך IFD של 12 בתים הוא בפורמט הבא.
Bytes | תיאור |
---|---|
0-1 | התג שמזהה את השדה |
2-3 | סוג השדה |
4-7 | ספירה מהסוג המצוין |
8-11 | היסט הערך, היסט הקובץ (בבתים) של הערך עבור השדה. הערך צפוי להתחיל על גבול מילה; לפיכך, היסט הערך המתאים יהיה מספר זוגי. היסט קובץ זה עשוי להצביע לכל מקום בקובץ, אפילו אחרי נתוני התמונה |
שדה TIFF הוא ישות לוגית המורכבת מתג TIFF והערך שלו. מושג לוגי זה מיושם כערך IFD, בתוספת הערך האמיתי אם הוא לא מתאים לחלק הערך/היסט, 4 הבייטים האחרונים של ערך ה-IFD. המונחים TIFF field ו-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 פיקסלים הם פורמט תמונות ממוזערות מומלץ עבור Exif2.1 ואילך.
TIFF פורמט תמונה ממוזערת
אם הערך של תג Compression(0x0103) ב-IFD1 הוא ‘1’, פורמט תמונה ממוזערת אינו דחיסה (נקראת תמונת TIFF). נקודת ההתחלה של נתוני התמונות הממוזערות היא תג StripOffset(0x0111), גודל התמונה הממוזערת הוא סכום התג StripByteCounts(0x0117).