فایل EXIF چیست؟
EXIF stands for “Exchangeable Image File Format”, the definition first given by Japan Camera Industry Association (JCIA) in 1985. این استاندارد از امروز توسط انجمن صنایع الکترونیک و فناوری اطلاعات ژاپن (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 μ-قانون PCM برای دادههای صوتی فشرده نشده، و IMA-ADPCM برای داده های صوتی فشرده).
نشانگر استفاده شده توسط EXIF
نشانگر 0xFFE0~~0xFFEF نشانگر برنامه است که توسط برنامه کاربر استفاده می شود. برای مثال، دوربینهای دیجیتال قدیمیتر از JFIF (فرمت تبادل فایل JPEG) برای ذخیرهسازی تصاویر استفاده میکنند. JFIF از نشانگر APP0 (0xFFE0) برای درج دادههای پیکربندی دوربین دیجیتال و تصویر کوچک استفاده میکند. علاوه بر این، 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 بایت 0x00 استفاده شده است. بعد از ناحیه نشانگر APP1، دیگر نشانگرهای JPEG دنبال می شوند.
ساختار داده Exif
ساختار ناهموار داده های EXIF (APP1) به صورت زیر نشان داده شده است. همانطور که در بالا توضیح داده شد، داده EXIF از کاراکتر ASCII EXIF و 2 بایت 0x00 شروع می شود، سپس داده EXIF به دنبال آن می آید. EXIF از فرمت TIFF برای ذخیره داده ها استفاده می کند.
FFE1 | نشانگر APP1 |
---|---|
SSSS | داده APP1 |
45786966 0000 | Exif Header |
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 حاوی اطلاعات زیر است:
بایت 0-1:
ترتیب بایت استفاده شده در فایل. مقادیر قانونی عبارتند از: II (4949.H) MM (4D4D.H).
در قالب II، مرتبه بایت همیشه از بایت کم اهمیت به بایت با اهمیت است، برای هر دو اعداد صحیح 16 بیتی و 32 بیتی به این ترتیب بایت کم اندین می گویند. در فرمت MM، ترتیب بایت ها برای اعداد صحیح 16 بیتی و 32 بیتی همیشه از مهم ترین به کم اهمیت ترین است. به این ترتیب بایت بزرگ اندیان می گویند.
بایت 2-3:
یک عدد دلخواه اما با دقت انتخاب شده (42) که بیشتر فایل را به عنوان یک فایل TIFF شناسایی می کند. ترتیب بایت به مقدار بایت 0-1 بستگی دارد.
بایت 4-7:
افست (بر حسب بایت) اولین IFD. دایرکتوری ممکن است در هر مکانی از فایل بعد از هدر باشد، اما باید از یک مرز کلمه شروع شود. به ویژه، یک فهرست فایل تصویری ممکن است از داده های تصویری که توضیح می دهد پیروی کند. خوانندگان باید نشانگرها را به هر جایی که ممکن است هدایت کنند دنبال کنند. اصطلاح بایت افست همیشه در این سند برای اشاره به مکانی با توجه به ابتدای فایل TIFF استفاده می شود. اولین بایت فایل دارای افست 0 است.
فهرست فایل تصویری
یک IFD حاوی اطلاعاتی در مورد تصویر و همچنین نشانگرهایی به داده های واقعی تصویر است. این شامل یک تعداد 2 بایتی از تعداد ورودی های دایرکتوری (یعنی تعداد فیلدها) و به دنبال آن یک رشته ورودی های 12 بایتی است. ، و به دنبال آن یک افست 4 بایتی از IFD بعدی (یا 0 اگر نبود). در یک فایل TIFF باید حداقل 1 IFD وجود داشته باشد و هر IFD باید حداقل یک ورودی داشته باشد.
ورودی IFD
هر ورودی IFD 12 بایتی در قالب زیر است.
بایت | توضیحات |
---|---|
0-1 | برچسبی که فیلد را مشخص می کند |
2-3 | نوع فیلد |
4-7 | تعداد از نوع مشخص شده |
8-11 | تغییر مقدار، آفست فایل (بر حسب بایت) مقدار برای فیلد. انتظار میرود مقدار از یک مرز کلمه شروع شود. بنابراین، مقدار آفست مربوطه یک عدد زوج خواهد بود. این فایل افست ممکن است در هر جایی از فایل، حتی پس از داده های تصویر، اشاره کند |
فیلد TIFF یک موجودیت منطقی است که از تگ TIFF و مقدار آن تشکیل شده است. این مفهوم منطقی بهعنوان یک ورودی IFD، به اضافه مقدار واقعی اگر در قسمت مقدار/افست، یعنی 4 بایت آخر ورودی IFD قرار نگیرد، پیادهسازی میشود. اصطلاحات فیلد TIFF و ورودی IFD در بیشتر زمینه ها قابل تعویض هستند.
تصویر بند انگشتی
Exif format contains thumbnail of image (except Ricoh RDC-300Z). Usually it is located next to the IFD1. 3 فرمت برای ریز عکسها وجود دارد. فرمت JPEG (JPEG از YCbCr استفاده می کند)، فرمت RGB TIFF، فرمت YCbCr TIFF.
تصویر کوچک با فرمت JPEG
If the value of Compression(0x0103) Tag in IFD1 is ‘6’, thumbnail image format is JPEG. Most of Exif image uses JPEG format for thumbnail. In that case, you can get offset of thumbnail by JpegIFOffset(0x0201) Tag in IFD1, size of thumbnail by JpegIFByteCount(0x0202) Tag. Data format is ordinary JPEG format, starts from 0xFFD8 and ends by 0xFFD9. به نظر می رسد فرمت JPEG و اندازه 160x120 پیکسل فرمت تصویر کوچک برای Exif2.1 یا بالاتر توصیه می شود.
تصویر کوچک با فرمت TIFF
اگر مقدار تگ Compression(0x0103) در IFD1 ‘1’ باشد، فرمت تصویر کوچک فشرده سازی نمی شود (به نام تصویر TIFF). نقطه شروع داده های تصویر کوچک تگ StripOffset(0x0111) است، اندازه تصویر کوچک مجموع تگ StripByteCounts(0x0117) است.