היכן נשמרים נתוני EXIF בתמונה? (JPEG, PNG, HEIC)
היכן EXIF באמת נמצא בתוך קובץ תמונה? כותרת ה-APP1, עץ ה-IFD, היסטי בייטים, וכיצד JPEG, HEIC, PNG, TIFF ו-WebP שומרים כל אחד את זה.
תשובה מהירה: EXIF נשמר בתוך קובץ התמונה עצמו, לא בקובץ צד (sidecar) נפרד. ב-JPEG הוא נמצא ב-מקטע סמן ה-APP1, בלוק כותרת שמתחיל בבייטים 0xFFE1 קרוב לתחילת הקובץ, כאשר התגים מסודרים בתוכו כעץ TIFF/IFD (IFD0, תת-IFD של Exif, ו-IFD של GPS). ב-HEIC אותם תגים יושבים בתיבות המטא-נתונים של המכל; ב-PNG הם יכולים לשבת במקטע eXIf; TIFF שומר אותם באופן מקורי. מכיוון שהנתונים מוטמעים, הם נוסעים עם התמונה בכל פעם שאתם מעתיקים או שולחים אותה. גררו כל תמונה אל מציג ה-EXIF שלנו כדי לראות מה יש בפנים; שום דבר לא מועלה.
אנשים מניחים לעיתים קרובות שמטא-נתונים נמצאים במסד נתונים נסתר בטלפון שלהם, או בקובץ קטן ליד התמונה. הם לא. ה"מתי, איפה ואיך" נכתב ישירות אל הבייטים של קובץ התמונה, באזור שמור קרוב לחזית. המדריך הזה מסביר היכן האזור הזה נמצא ומה קורה כשאתם עורכים או משתפים את התמונה.
הגרסה הקצרה: זה בקובץ, קרוב לראש
פתחו כל JPEG ישר ממצלמה והסתכלו על כמה מאות הבייטים הראשונים. אחרי סמן תחילת התמונה (0xFFD8), אחד הדברים הראשונים שאתם פוגשים הוא מקטע סמן ה-APP1, שמחזיק את כל בלוק ה-EXIF. הפיקסלים הדחוסים מגיעים אחריו. אז JPEG טיפוסי ממצלמה רץ כך: סמן התחלה 0xFFD8, סמן ה-APP1 0xFFE1 המחזיק את EXIF, כותרות אופציונליות (פרופיל ICC של APP2, IPTC של APP13, XMP), נתוני הפיקסלים, ואז סמן הסיום 0xFFD9. מכיוון ש-EXIF יושב בכותרת קרוב לראש, נפרד מהפיקסלים, עריכת EXIF נקייה אינה דוחסת מחדש את התמונה; הכלי רק כותב מחדש את אזור הכותרת.
עץ ה-IFD: IFD0, תת-IFD של Exif, IFD של GPS
מקטע ה-APP1 נפתח עם 0xFFE1, אורך בן שני בייטים, והמזהה Exif\0\0. מיד אחרי זה, המטען מתחיל ב-כותרת TIFF זעירה: EXIF הוא, באופן פנימי, קובץ TIFF קטן המוטמע בתוך ה-JPEG. הכותרת הזו מצהירה על סדר הבייטים (II little-endian או MM big-endian) ועל היסט אל הספרייה הראשונה של התגים.
משם, התגים מאורגנים כעץ של IFD-ים (Image File Directories), לא כרשימה שטוחה אחת. לכל אחד יש תפקיד:
- IFD0 (הספרייה "האפסית" או "TIFF"): שדות ברמת המצלמה והתמונה כמו Make, Model, Software, Orientation ו-Copyright. הוא גם מחזיק שני תגי מצביעים שמובילים אל תת-הספריות שלמטה.
- תת-IFD של Exif: נתונים טכניים מזמן הצילום. DateTimeOriginal, הגדרות חשיפה, עדשה, ISO, מרחב צבע.
- IFD של GPS: קו רוחב, קו אורך, גובה וחותמות זמן שנגזרות מ-GPS, נוכח רק כאשר נרשם מיקום.
- IFD1 (הספרייה "הראשונה"): תמונה ממוזערת מוטמעת שהמצלמה יצרה.
קורא מטייל בעץ: מתחיל בכותרת ה-TIFF, קופץ אל IFD0, עוקב אחר מצביע ה-Exif עבור הגדרות הצילום, עוקב אחר מצביע ה-GPS עבור המיקום. מציג ה-EXIF שלנו עושה בדיוק את זה ופורש כל ספרייה בטבלה משלה; מדריך תגי ה-EXIF הוא המילון המלא של כל שדה. ערכים שנכנסים בארבעה בייטים יושבים בתוך רשומת התג עצמה; גדולים יותר, כמו קואורדינטת GPS, נשמרים במקום אחר במקטע, כאשר הרשומה מחזיקה היסט בייטים אליהם.
איך פורמטים אחרים שומרים את אותם תגים
התגים של EXIF זהים במידה רבה בין פורמטים. מה שמשתנה הוא המכל שאליו התגים נדחפים.
- JPEG / JPG: מקטע סמן ה-APP1 שתואר למעלה.
- TIFF: שומר EXIF באופן מקורי. קובץ TIFF הוא מבנה של IFD-ים, כך ש-EXIF אינו מוברג עליו, הוא חלק מפורמט הבסיס. ה-EXIF של JPEG הוא עותק מושאל של פריסת ה-TIFF הזו.
- HEIC: ברירת המחדל של iPhone מאז iOS 11. המכל HEIF שלו בנוי מ"תיבות" מקוננות, ותגי ה-EXIF נמצאים בתיבת מטא-נתונים של פריט ולא בסמן בסגנון JPEG. אותם תגים, מדף אחר.
- PNG: יכול לשאת EXIF במקטע
eXIfייעודי; כלים פשוטים יותר משתמשים לעיתים במקטעי טקסטtEXtאוiTXtבמקום. רבים מקבצי ה-PNG המיוצאים לאינטרנט אינם נושאים מאומה. - WebP: שומר EXIF במקטע
EXIFבתוך המכל RIFF שלו.
מדריך התגים מכסה את הסתייגויות העריכה לכל פורמט בפירוט.
למה "מוטמע" חשוב: המטא-נתונים נוסעים עם הקובץ
מכיוון ש-EXIF נמצא בתוך הקובץ, הוא עוקב אחר התמונה לכל מקום שהקובץ הולך אליו. העתיקו את ה-JPEG לכונן USB, צרפו אותו לדוא"ל, או גררו אותו לתיקייה משותפת, וקואורדינטות ה-GPS וזמן הצילום מגיעים יחד. זו בדיוק הסיבה שמטא-נתונים כל כך שימושיים לראיות וכל כך מסוכנים לפרטיות: ההוכחה, והדליפה, אפויים פנימה.
זה גם מסביר למה הסרת EXIF אינה מחיקה בשורה אחת. התגים שזורים במבנה הכותרת של הקובץ, אז הסרתם פירושה כתיבה מחדש של הקובץ בלי אותו אזור. כלי הסרת ה-EXIF שלנו עושה זאת בדפדפן שלכם.
מה קורה כשאתם עורכים, מצלמים מסך או מעלים
מכיוון ש-EXIF הוא חלק מהקובץ, מה ששורד תלוי בשאלה האם הקובץ עובר קידוד מחדש:
- העתקה, העברה, שינוי שם: הבייטים אינם משתנים, אז EXIF נשמר.
- חיתוך, סיבוב, עריכות קלות: רוב העורכים שומרים את הבלוק ורק מעדכנים את תגי המימדים והכיוון. חלקם כותבים אותו מחדש; בדקו אחר כך עם המציג.
- צילום מסך: צילום מסך הוא תמונה חדשה לגמרי עם EXIF מינימלי משלה וללא נתוני המצלמה או ה-GPS המקוריים. זה למעשה מחיקת מטא-נתונים.
- העלאה לפלטפורמות חברתיות: Instagram, Facebook, X ו-WhatsApp מסירים EXIF בעת ההעלאה על ידי קידוד מחדש. כלי שיתוף קבצים כמו דוא"ל, Dropbox ו-AirDrop שומרים אותו.
לתמונה הרחבה יותר של מה ש-EXIF מתעד ולמה אנשים בודקים אותו, ראו מה הם נתוני EXIF.
שאלות נפוצות
האם EXIF נשמר בקובץ נפרד ליד התמונה? לא, הוא מוטמע בתוך קובץ התמונה עצמו. (חלק מתהליכי העבודה המקצועיים של RAW משתמשים בקבצי צד .xmp, אבל EXIF סטנדרטי ב-JPEG, HEIC, PNG או TIFF נמצא בתוך התמונה.)
מה ההבדל בין בלוק ה-APP1 וה-IFD-ים? APP1 הוא החריץ של JPEG שמחזיק את ה-EXIF. ה-IFD-ים (IFD0, תת-IFD של Exif, IFD של GPS) הם עץ הספריות בתוך החריץ הזה.
בשורה התחתונה
EXIF אינו נשמר במסד נתונים נסתר של אפליקציה או בקובץ צד. הוא מוטמע בתמונה: ב-JPEG זה אומר מקטע סמן ה-APP1 קרוב לראש, מובנה כעץ TIFF/IFD (IFD0, תת-IFD של Exif, IFD של GPS). HEIC, PNG, WebP ו-TIFF שומרים את אותם תגים במכלים שלהם. מכיוון שזה אפוי פנימה, המטא-נתונים נוסעים עם כל עותק.
כדי לראות היכן המטא-נתונים של התמונה שלכם נמצאים: מציג ה-EXIF. כדי להסיר אותם לפני שיתוף: כלי הסרת ה-EXIF. למשמעות של כל תג: מדריך תגי ה-EXIF. הכול בדפדפן שלכם, שום דבר לא מועלה.
נסו את הכלים
החתימו תמונה עכשיו בדפדפן שלך, או הורידו את אפליקציית ה-iOS לצילום חי עם GPS וזמן אטומי.