ما هو ملف EXIF؟
يرمز EXIF إلى “تنسيق ملف الصور القابل للاستبدال” ، وهو التعريف الذي تم تقديمه لأول مرة بواسطة Japan Camera Industry Association (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 للملفات الصوتية (Linear PCM أو ITU-T G.711 μ-Law PCM لبيانات الصوت غير المضغوطة ، و IMA - ADPCM لبيانات الصوت المضغوطة).
العلامة المستخدمة من قبل EXIF
العلامة 0xFFE0 ~~ 0xFFEF هي “Application Marker” ، التي يستخدمها تطبيق المستخدم. على سبيل المثال ، تستخدم الكاميرات الرقمية الأقدم JFIF (تنسيق تبادل ملف JPEG) لتخزين الصور. يستخدم JFIF علامة APP0 (0xFFE0) لإدخال بيانات تكوين كاميرا رقمية وصورة مصغرة. علاوة على ذلك ، يستخدم EXIF أيضًا Application Marker لإدخال البيانات ، لكن EXIF يستخدم APP1 (0xFFE1) Marker لتجنب التعارض مع تنسيق JFIF. تبدأ كل تنسيقات ملفات EXIF من هذا التنسيق.
علامة SOI | علامة APP1 | بيانات APP1 | علامة أخرى |
---|---|---|---|
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 ، تتبع علامات JPEG الأخرى.
بنية بيانات Exif
يظهر هيكل تقريبي لبيانات EXIF (APP1) على النحو التالي. كما نوقش أعلاه ، تبدأ بيانات EXIF من حرف ASCII “EXIF” و 2 بايت من 0x00 ، ثم تتبع بيانات EXIF. يستخدم EXIF تنسيق TIFF لتخزين البيانات.
FFE1 | APP1 ماركر |
---|---|
SSSS | بيانات APP1 |
45786966 0000 | رأس Exif |
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 إذا لم يكن هناك أي شيء). يجب أن يكون هناك IFD واحد على الأقل في ملف TIFF ويجب أن يكون لكل IFD إدخال واحد على الأقل.
إدخال IFD
كل إدخال IFD 12 بايت بالتنسيق التالي.
بايت | الوصف |
---|---|
0-1 | العلامة التي تعرّف الحقل |
2-3 | نوع الحقل |
4-7 | عدد النوع المشار إليه |
8-11 | إزاحة القيمة ، إزاحة الملف (بالبايت) لقيمة الحقل. من المتوقع أن تبدأ القيمة عند حد كلمة ؛ وبالتالي ، فإن موازنة القيمة المقابلة ستكون عددًا زوجيًا. قد يشير هذا الملف إلى أي مكان في الملف ، حتى بعد بيانات الصورة |
حقل TIFF هو كيان منطقي يتكون من علامة TIFF وقيمتها. يتم تنفيذ هذا المفهوم المنطقي كإدخال IFD ، بالإضافة إلى القيمة الفعلية إذا لم يتناسب مع جزء القيمة / الإزاحة ، آخر 4 بايت من إدخال IFD. المصطلحات حقل TIFF وإدخال IFD قابلة للتبديل في معظم السياقات.
صورة مصغرة
يحتوي تنسيق Exif على صورة مصغرة للصورة (باستثناء Ricoh RDC-300Z). عادة ما يقع بجوار IFD1. هناك 3 تنسيقات للصور المصغرة ؛ تنسيق JPEG (يستخدم JPEG YCbCr) ، تنسيق RGB TIFF ، تنسيق YCbCr TIFF.
صورة مصغرة بتنسيق JPEG
إذا كانت قيمة علامة الضغط (0x0103) في IFD1 هي “6” ، فإن تنسيق الصورة المصغرة هو JPEG. تستخدم معظم صور Exif تنسيق JPEG للصور المصغرة. في هذه الحالة ، يمكنك إزاحة الصورة المصغرة بواسطة علامة JpegIFOffset (0x0201) في IFD1 ، حجم الصورة المصغرة بواسطة علامة JpegIFByteCount (0x0202). تنسيق البيانات هو تنسيق JPEG عادي ، يبدأ من 0xFFD8 وينتهي بـ 0xFFD9. يبدو أن تنسيق JPEG وحجم 160x120 بكسل يوصى بهما كصورة مصغرة لـ Exif2.1 أو ما بعده.
صورة مصغرة بتنسيق TIFF
إذا كانت قيمة علامة الضغط (0x0103) في IFD1 هي “1” ، فإن تنسيق الصورة المصغرة لا يمثل ضغطًا (يسمى صورة TIFF). نقطة بداية بيانات الصورة المصغرة هي علامة StripOffset (0x0111) ، حجم الصورة المصغرة هو مجموع علامةStripByteCounts (0x0117).