داده EXIF در یک عکس کجا ذخیره میشود؟ (JPEG، PNG، HEIC)
EXIF واقعاً کجا درون یک فایل عکس قرار دارد؟ هدر APP1، درخت IFD، آفستهای بایتی و این که JPEG، HEIC، PNG، TIFF و WebP هر کدام چگونه آن را ذخیره میکنند.
پاسخ کوتاه: EXIF درون خود فایل تصویری ذخیره میشود، نه در یک فایل جانبی جداگانه. در یک JPEG درون بخش نشانگر APP1 قرار دارد، یک بلوک هدر که با بایتهای 0xFFE1 نزدیک ابتدای فایل آغاز میشود، با برچسبهایی که درون آن بهصورت یک درخت TIFF/IFD چیده شدهاند (IFD0، یک Exif sub-IFD و یک GPS IFD). در HEIC همان برچسبها در جعبههای فراداده container قرار دارند؛ در PNG میتوانند در یک chunk به نام eXIf قرار بگیرند؛ TIFF آنها را بهصورت بومی ذخیره میکند. چون داده جاسازی شده است، هرگاه عکس را کپی یا ارسال کنید همراه آن سفر میکند. هر عکسی را در نمایشگر EXIF ما رها کنید تا ببینید چه چیزی درون آن هست؛ هیچ چیزی آپلود نمیشود.
مردم اغلب تصور میکنند فراداده در یک پایگاهداده پنهان روی گوشیشان قرار دارد، یا در یک فایل کوچک کنار عکس. اینطور نیست. اطلاعات «چه زمانی، کجا و چگونه» مستقیماً درون بایتهای فایل تصویری نوشته میشود، در یک ناحیه رزروشده نزدیک به ابتدا. این راهنما توضیح میدهد کجا آن ناحیه است و وقتی عکس را ویرایش یا به اشتراک میگذارید چه اتفاقی میافتد.
نسخه کوتاه: درون فایل است، نزدیک بالا
هر JPEG مستقیم از یک دوربین را باز کنید و به چند صد بایت اول نگاه کنید. پس از نشانگر آغاز تصویر (0xFFD8)، یکی از اولین چیزهایی که به آن میرسید بخش نشانگر APP1 است، که کل بلوک EXIF را نگه میدارد. پیکسلهای فشردهشده پس از آن میآیند. پس یک JPEG معمولی دوربین اینطور پیش میرود: نشانگر آغاز 0xFFD8، نشانگر APP1 با کد 0xFFE1 که EXIF را نگه میدارد، هدرهای اختیاری (پروفایل ICC در APP2، IPTC در APP13، XMP)، داده پیکسل، سپس نشانگر پایان 0xFFD9. چون EXIF در یک هدر نزدیک بالا، جدا از پیکسلها قرار دارد، یک ویرایش تمیز EXIF تصویر را دوباره فشرده نمیکند؛ ابزار فقط ناحیه هدر را بازنویسی میکند.
درخت IFD: IFD0، Exif sub-IFD، GPS IFD
بخش APP1 با 0xFFE1، یک طول دوبایتی و شناسه Exif\0\0 آغاز میشود. درست پس از آن، محتوا با یک هدر TIFF کوچک شروع میشود: EXIF در درون، یک فایل TIFF کوچک جاسازیشده درون JPEG است. آن هدر ترتیب بایت (II little-endian یا MM big-endian) و یک آفست به نخستین دایرکتوری برچسبها را اعلام میکند.
از آنجا، برچسبها بهصورت یک درخت از IFD ها (Image File Directory ها) سازماندهی میشوند، نه یک فهرست تخت. هر کدام وظیفهای دارند:
- IFD0 (دایرکتوری «صفرم» یا «TIFF»): فیلدهای سطح دوربین و تصویر مانند Make، Model، Software، Orientation و Copyright. همچنین دو برچسب اشارهگر را نگه میدارد که به زیردایرکتوریهای پایین منتهی میشوند.
- Exif sub-IFD: داده فنی زمان گرفتهشدن. DateTimeOriginal، تنظیمات نوردهی، لنز، ISO، فضای رنگ.
- GPS IFD: عرض جغرافیایی، طول جغرافیایی، ارتفاع و برچسبهای زمانی مشتقشده از GPS، فقط زمانی حاضر است که یک موقعیت مکانی ثبت شده باشد.
- IFD1 (دایرکتوری «اول»): یک تصویر بندانگشتی جاسازیشده که دوربین تولید کرده است.
یک خواننده درخت را پیمایش میکند: از هدر TIFF شروع میکند، به IFD0 میپرد، اشارهگر Exif را برای تنظیمات گرفتهشدن دنبال میکند، اشارهگر GPS را برای موقعیت مکانی دنبال میکند. نمایشگر EXIF ما دقیقاً همین کار را میکند و هر دایرکتوری را در جدول خودش میچیند؛ مرجع برچسبهای EXIF فرهنگ کامل هر فیلد است. مقادیری که در چهار بایت جا میشوند بهصورت درونخطی در ورودی برچسب قرار میگیرند؛ مقادیر بزرگتر، مانند یک مختصات GPS، در جای دیگری از بخش ذخیره میشوند، و ورودی یک آفست بایتی به آنها را نگه میدارد.
چگونه قالبهای دیگر همان برچسبها را ذخیره میکنند
برچسبهای EXIF تا حد زیادی در همه قالبها یکسان هستند. آنچه فرق میکند container ای است که برچسبها در آن جای میگیرند.
- JPEG / JPG: بخش نشانگر APP1 که در بالا توضیح داده شد.
- TIFF: EXIF را بهصورت بومی ذخیره میکند. یک فایل TIFF خودش یک ساختار از IFD ها است، بنابراین EXIF به آن سوار نشده، بخشی از قالب پایه است. EXIF در JPEG یک کپی قرضگرفتهشده از همین چیدمان TIFF است.
- HEIC: پیشفرض iPhone از زمان iOS 11. container قالب HEIF آن از «جعبههای» تودرتو ساخته شده است، و برچسبهای EXIF در یک جعبه فراداده آیتم قرار دارند، نه در یک نشانگر بهسبک JPEG. همان برچسبها، قفسهبندی متفاوت.
- PNG: میتواند EXIF را در یک chunk اختصاصی به نام
eXIfحمل کند؛ ابزارهای سادهتر گاهی بهجای آن از chunk های متنیtEXtیاiTXtاستفاده میکنند. بسیاری از PNG های صادرشده برای وب اصلاً هیچکدام را همراه ندارند. - WebP: EXIF را در یک chunk به نام
EXIFدرون container از نوع 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، Exif sub-IFD، GPS IFD) درخت دایرکتوری درون آن جایگاه هستند.
نتیجه نهایی
EXIF در یک پایگاهداده پنهان برنامه یا یک فایل جانبی نگهداری نمیشود. درون تصویر جاسازی شده است: در یک JPEG این به معنای بخش نشانگر APP1 نزدیک بالا است، که بهصورت یک درخت TIFF/IFD ساختاربندی شده (IFD0، Exif sub-IFD، GPS IFD). HEIC، PNG، WebP و TIFF همان برچسبها را در container های خودشان ذخیره میکنند. چون پخته شده است، فراداده همراه هر کپی سفر میکند.
برای دیدن این که فراداده عکس شما کجا قرار دارد: نمایشگر EXIF. برای حذف آن پیش از اشتراکگذاری: حذفکننده EXIF. برای معنای هر برچسب: مرجع برچسبهای EXIF. همه در مرورگر شما، هیچ چیزی آپلود نمیشود.
ابزارها را امتحان کنید
همین حالا یک عکس را در مرورگرتان مهر کنید، یا اپلیکیشن iOS را برای ثبت زنده همراه با GPS و زمان اتمی بگیرید.