تنسيق ملف BMP
تنسيق ملف BMP ، أو bitmap ، هو تنسيق ملف صورة رسومية نقطية يستخدم لتخزين الصور الرقمية النقطية ، بشكل مستقل عن جهاز العرض (مثل محول الرسومات )، وخاصة على أنظمة التشغيل Microsoft Windows [ 2 ] و OS/2 [ 3 ] .
يُمكن لملف BMP تخزين الصور الرقمية ثنائية الأبعاد بأعماق لونية متنوعة ، مع إمكانية إضافة ضغط البيانات وقنوات ألفا وملفات تعريف الألوان . وتغطي مواصفات ملفات تعريف ويندوز (WMF) ملف BMP. [ 4 ]
الصور النقطية المستقلة عن الجهاز وتنسيق ملف BMP
حدّدت مايكروسوفت تمثيلاً خاصاً للصور النقطية الملونة ذات أعماق لونية مختلفة، وذلك لتسهيل تبادل الصور النقطية بين الأجهزة والتطبيقات ذات التمثيلات الداخلية المتنوعة. أطلقت مايكروسوفت على هذه الصور اسم "الصور النقطية المستقلة عن الجهاز" أو "DIBs"، ويُطلق على تنسيق ملفاتها اسم "تنسيق ملف DIB" أو "تنسيق ملف صورة BMP".
وفقًا لدعم مايكروسوفت: [ 5 ]
تُعدّ صورة البت المستقلة عن الجهاز (DIB) تنسيقًا يُستخدم لتعريف صور البت المستقلة عن الجهاز بدقة ألوان مختلفة. والغرض الرئيسي من DIB هو السماح بنقل صور البت من جهاز إلى آخر (ومن هنا جاءت تسمية "المستقلة عن الجهاز"). يُعتبر DIB تنسيقًا خارجيًا، على عكس صورة البت المعتمدة على الجهاز، والتي تظهر في النظام ككائن صورة بت (يتم إنشاؤه بواسطة تطبيق...). عادةً ما يتم نقل DIB في ملفات تعريفية (باستخدام دالة StretchDIBits() عادةً)، وملفات BMP، والحافظة ( تنسيق بيانات CF_DIB ).
تتناول الأقسام التالية بالتفصيل البيانات المخزنة في ملف BMP أو DIB. هذا هو تنسيق ملف BMP القياسي. [ 5 ] تقوم بعض التطبيقات بإنشاء ملفات صور نقطية لا تتوافق مع وثائق مايكروسوفت. كما أن بعض الحقول غير مستخدمة، حيث ستجد القيمة 0 في هذه الحقول غير المستخدمة.
بنية الملفات
يتكون ملف الصورة النقطية من هياكل ثابتة الحجم (رؤوس) بالإضافة إلى هياكل متغيرة الحجم تظهر بتسلسل محدد مسبقًا. قد تظهر نسخ مختلفة من بعض هذه الهياكل في الملف، نظرًا للتطور الطويل لهذا النوع من الملفات.
بالرجوع إلى الرسم التخطيطي 1، يتكون ملف الصورة النقطية من هياكل بالترتيب التالي:
| اسم البنية | خياري | الحجم (بايت) | غاية | تعليق |
|---|---|---|---|---|
| رأس ملف الصورة النقطية | لا | 14 | معلومات عامة | لا حاجة لذلك بعد تحميل الملف في الذاكرة |
| رأس DIB | لا | حجم ثابت (توجد 7 إصدارات مختلفة) | معلومات تفصيلية وتنسيق البكسل | يلي ذلك مباشرةً رأس ملف الصورة النقطية |
| أقنعة بت إضافية | نعم | 12 أو 16 | تنسيق البكسل | يظهر هذا الخيار فقط في حال كان رأس DIB هو BITMAPINFOHEADER وتم تعيين عضو طريقة الضغط إما إلى BI_BITFIELDS أو BI_ALPHABITFIELDS |
| جدول الألوان | يعتمد على | يختلف | الألوان (مصفوفة البكسل) | إلزامي لأعماق الألوان ≤ 8 بت |
| الفجوة 1 | نعم | يختلف | محاذاة الهيكل | أحد آثار مصفوفة إزاحة الملف إلى البكسل في رأس ملف الصورة النقطية |
| مصفوفة بكسل | لا | يختلف | قيم البكسل | يتم تحديد تنسيق البكسل بواسطة رأس DIB أو أقنعة البتات الإضافية. يتم إضافة حشو إلى كل صف في مصفوفة البكسل ليصبح حجمه من مضاعفات 4 بايت. |
| الفجوة 2 | نعم | يختلف | محاذاة الهيكل | أحد آثار حقل إزاحة بيانات ملف تعريف ICC في رأس DIB |
| ملف تعريف ألوان ICC | نعم | يختلف | ملف تعريف الألوان (لإدارة الألوان) | يمكن أن يحتوي أيضًا على مسار إلى ملف خارجي يحتوي على ملف تعريف الألوان. عند تحميله في الذاكرة كـ "DIB غير مضغوط"، فإنه يقع بين جدول الألوان و Gap1. [ 6 ] |
ملفات DIB في الذاكرة
يتحول ملف صورة نقطية مُحمّل في الذاكرة إلى بنية بيانات DIB، وهي عنصر أساسي في واجهة برمجة تطبيقات Windows GDI. تتشابه بنية بيانات DIB في الذاكرة تقريبًا مع تنسيق ملف BMP، لكنها لا تحتوي على رأس ملف الصورة النقطية ذي الـ 14 بايت، وتبدأ برأس DIB. بالنسبة لملفات DIB المُحمّلة في الذاكرة، يمكن أن يتكون جدول الألوان أيضًا من مدخلات 16 بت تُشكل مؤشرات للوحة الألوان المُستخدمة حاليًا [ 7 ] (مستوى إضافي من التوجيه غير المباشر)، بدلًا من تعريفات ألوان RGB الصريحة. في جميع الحالات، يجب أن تبدأ مصفوفة البكسل من عنوان ذاكرة يكون من مضاعفات 4 بايت. في ملفات DIB غير المُضغوطة المُحمّلة في الذاكرة، يجب وضع بيانات ملف تعريف اللون الاختيارية مباشرةً بعد جدول الألوان وقبل الفجوة 1 ومصفوفة البكسل [ 6 ] (على عكس الشكل 1).
عندما يكون حجم الفجوتين gap1 و gap2 صفرًا، يُشار عادةً إلى بنية بيانات DIB الموجودة في الذاكرة باسم "DIB المضغوط"، ويمكن الإشارة إليها بمؤشر واحد يشير إلى بداية رأس DIB. في جميع الحالات، يجب أن تبدأ مصفوفة البكسل عند عنوان ذاكرة من مضاعفات 4 بايت. في بعض الحالات، قد يكون من الضروري تعديل عدد الإدخالات في جدول الألوان لفرض أن يكون عنوان ذاكرة مصفوفة البكسل من مضاعفات 4 بايت. [ 7 ] بالنسبة لـ "DIB المضغوط" المحمّل في الذاكرة، يجب أن تلي بيانات ملف تعريف اللون الاختيارية مصفوفة البكسل مباشرةً، كما هو موضح في الشكل 1 (مع gap1=0 و gap2=0). [ 6 ] تتطلب وظائف واجهة برمجة تطبيقات الحافظة في نظام Windows ، بالإضافة إلى بعض وظائف فرشاة Windows ذات الأنماط ووظائف الموارد، استخدام "DIB المضغوط". [ 8 ]
رأس ملف الصورة النقطية
توجد هذه الكتلة من البايتات في بداية الملف وتُستخدم لتحديد هويته. يقرأ التطبيق عادةً هذه الكتلة أولًا للتأكد من أن الملف هو بالفعل ملف BMP وأنه غير تالف. أول بايتين في تنسيق ملف BMP هما الحرف "B" ثم الحرف "M" في ترميز ASCII . تُخزَّن جميع القيم العددية بتنسيق little-endian (أي البايت الأقل أهمية أولًا).
| الإزاحة (بايت) | الحجم (بايت) | وصف |
|---|---|---|
| 0 | 2 | يُستخدم حقل العنوان لتحديد ملفي BMP وDIB 0x42 0x4Dبنظام العد الست عشري ، تمامًا كما هو الحال BMفي نظام ASCII. القيم الممكنة هي:
|
| 2 | 4 | حجم ملف BMP بالبايت |
| 6 | 2 | محجوز؛ تعتمد القيمة الفعلية على التطبيق الذي يُنشئ الصورة، وإذا تم إنشاؤها يدويًا فقد تكون 0 |
| 8 | 2 | محجوز؛ تعتمد القيمة الفعلية على التطبيق الذي يُنشئ الصورة، وإذا تم إنشاؤها يدويًا فقد تكون 0 |
| 10 | 4 | الإزاحة، أي عنوان البداية، للبايت حيث يمكن العثور على بيانات صورة الخريطة النقطية (مصفوفة البكسل). |
رأس DIB (رأس معلومات الصورة النقطية)
تُزوّد هذه الكتلة من البايتات التطبيق بمعلومات تفصيلية حول الصورة، والتي ستُستخدم لعرضها على الشاشة. تتطابق هذه الكتلة أيضًا مع رأس البيانات المستخدم داخليًا في نظامي التشغيل Windows و OS/2، ولها عدة صيغ مختلفة. تحتوي جميعها على حقل من نوع dword (32 بت) يُحدد حجمها، مما يُسهّل على التطبيق تحديد رأس البيانات المستخدم في الصورة. يعود سبب وجود رؤوس بيانات مختلفة إلى قيام مايكروسوفت بتوسيع تنسيق DIB عدة مرات. يمكن استخدام رؤوس البيانات الموسعة الجديدة مع بعض وظائف GDI بدلًا من القديمة، مما يوفر مزيدًا من الوظائف. نظرًا لأن GDI يدعم وظيفة تحميل ملفات الصور النقطية، فإن تطبيقات Windows النموذجية تستخدم هذه الوظيفة. من نتائج ذلك أن تنسيقات BMP التي تدعمها هذه التطبيقات تتطابق مع التنسيقات التي يدعمها إصدار Windows المُشغّل. راجع الجدول أدناه لمزيد من المعلومات.
| الحجم (بايت) | اسم العنوان | دعم نظام التشغيل | سمات | بقلم |
|---|---|---|---|---|
| 12 | رأس ملف الصورة النقطية OS21XBITMAPHEADER | ويندوز 2.0 أو أحدث، نظام التشغيل OS/2 1.x [ 3 ] | ||
| 64 | OS22XBITMAPHEADER | OS/2 BITMAPCOREHEADER 2 | يضيف خاصية التظليل النصفي . يضيف خاصية RLE وضغط هوفمان أحادي البعد. | |
| 16 | OS22XBITMAPHEADER | يحتوي هذا الإصدار من الترويسة السابقة على أول 16 بايت فقط، ويُفترض أن تكون البايتات المتبقية ذات قيم صفرية. [ 3 ] ومن الأمثلة على ذلك الصورة pal8os2v2-16.bmp [ 9 ] من مجموعة BMP. [ 10 ] | ||
| 40 | رأس معلومات الصورة النقطية | ويندوز إن تي ، الإصدار 3.1x أو أحدث [ 2 ] | يوسّع عرض وارتفاع الصورة النقطية إلى 4 بايت. ويضيف صيغ 16 بت لكل بكسل و32 بت لكل بكسل. ويضيف ضغط RLE. | |
| 52 | BITMAPV2INFOHEADER | غير موثق | يضيف أقنعة بت RGB. | مايكروسوفت |
| 56 | BITMAPV3INFOHEADER | لم يتم توثيق ذلك رسميًا، ولكن تم نشر هذه الوثائق على منتديات Adobe، من قبل موظف في Adobe مع بيان مفاده أن المعيار كان في وقت ما في الماضي مدرجًا في وثائق MS الرسمية [ 11 ]. | يضيف قناع بت قناة ألفا . | مايكروسوفت |
| 108 | BITMAPV4HEADER | ويندوز إن تي 4.0 أو 95 أو أحدث | يضيف نوع مساحة اللون وتصحيح جاما | |
| 124 | BITMAPV5HEADER | ويندوز إن تي 5.0 أو 98 أو أحدث | إضافة ملفات تعريف ألوان ICC | جيمب |
| الإزاحة (بايت) | الحجم (بايت) | OS/2 1.x BITMAPCOREHEADER [ 3 ] |
|---|---|---|
| 14 | 4 | حجم هذا العنوان (12 بايت) |
| 18 | 2 | عرض الصورة النقطية بالبكسل (16 بت غير موقع) |
| 20 | 2 | ارتفاع الصورة النقطية بالبكسل (عدد صحيح غير مُوقّع 16 بت) |
| 22 | 2 | يجب أن يكون عدد مستويات الألوان 1 |
| 24 | 2 | عدد البتات لكل بكسل |
يختلف ملف BITMAPCOREHEADER الخاص بنظام التشغيل Windows 2.x عن ملف BITMAPCOREHEADER الخاص بنظام التشغيل OS/2 1.x (الموضح في الجدول أعلاه) في تفصيل واحد وهو أن حقلي عرض الصورة وارتفاعها عبارة عن أعداد صحيحة موقعة، وليست أعدادًا غير موقعة. [ 12 ]
تضيف الإصدارات اللاحقة لـ BITMAPINFOHEADER الحقول إلى نهاية رأس الإصدار السابق فقط. على سبيل المثال: يضيف BITMAPV2INFOHEADER حقولًا إلى BITMAPINFOHEADER ، ويضيف BITMAPV3INFOHEADER حقولًا إلى BITMAPV2INFOHEADER .
تم إدخال قناة ألفا مدمجة مع BITMAPV3INFOHEADER غير الموثق ومع BITMAPV4HEADER الموثق (منذ ويندوز 95 )، وتُستخدم في نظام تسجيل الدخول والسمات في ويندوز XP، بالإضافة إلى مايكروسوفت أوفيس (منذ الإصدار 2000). كما تدعمها بعض برامج تحرير الصور ، مثل أدوبي فوتوشوب منذ الإصدار 7 وأدوبي فلاش منذ الإصدار MX 2004 (المعروف آنذاك باسم ماكروميديا فلاش). وتدعمها أيضًا برامج جيمب ، وجوجل كروم ، ومايكروسوفت باوربوينت ، ومايكروسوفت وورد .
لأسباب تتعلق بالتوافق، تستخدم معظم التطبيقات رؤوس DIB القديمة لحفظ الملفات. ونظرًا لتوقف دعم نظام التشغيل OS/2 بعد نظام التشغيل Windows 2000، فإن تنسيق Windows الشائع حاليًا هو رأس BITMAPINFOHEADER . راجع الجدول التالي للاطلاع على وصفه. تُخزَّن جميع القيم كأعداد صحيحة غير مُوقَّعة، ما لم يُنص على خلاف ذلك صراحةً.
| الإزاحة (بايت) | الحجم (بايت) | ويندوز BITMAPINFOHEADER [ 2 ] |
|---|---|---|
| 14 | 4 | حجم هذا العنوان بالبايت (40) |
| 18 | 4 | عرض الصورة النقطية بالبكسل (عدد صحيح موقّع) |
| 22 | 4 | ارتفاع الصورة النقطية بالبكسل (عدد صحيح ذو إشارة) |
| 26 | 2 | عدد مستويات الألوان (يجب أن يكون 1) |
| 28 | 2 | عدد البتات لكل بكسل، وهو ما يُعرف بعمق اللون في الصورة. القيم النموذجية هي 1، 4، 8، 16، 24، و32. |
| 30 | 4 | طريقة الضغط المستخدمة. انظر الجدول التالي للاطلاع على قائمة بالقيم الممكنة. |
| 34 | 4 | حجم الصورة. هذا هو حجم بيانات الصورة النقطية الخام؛ ويمكن إعطاء قيمة وهمية 0 للصور النقطية BI_RGB. |
| 38 | 4 | الدقة الأفقية للصورة. (بكسل لكل متر، عدد صحيح موجب) |
| 42 | 4 | الدقة الرأسية للصورة. (بكسل لكل متر، عدد صحيح موجب) |
| 46 | 4 | عدد الألوان في لوحة الألوان، أو 0 للوضع الافتراضي 2n |
| 50 | 4 | عدد الألوان المهمة المستخدمة، أو صفر عندما يكون كل لون مهمًا؛ يتم تجاهلها عمومًا |
يمكن أن تكون طريقة الضغط (الإزاحة 30) كالتالي:
| قيمة | تم التعرف عليه بواسطة | طريقة الضغط | تعليق |
|---|---|---|---|
| 0 | BI_RGB | لا أحد | الأكثر شيوعاً |
| 1 | BI_RLE8 | RLE 8 بت/بكسل | لا يمكن استخدامه إلا مع الصور النقطية 8 بت/بكسل |
| 2 | BI_RLE4 | RLE 4 بت/بكسل | لا يمكن استخدامه إلا مع الصور النقطية ذات 4 بت/بكسل |
| 3 | حقول البيانات الثنائية | OS22XBITMAPHEADER : هوفمان أحادي البعد | BITMAPV2INFOHEADER : أقنعة حقول بت RGB، BITMAPV3INFOHEADER + : RGBA |
| 4 | BI_JPEG | OS22XBITMAPHEADER : RLE-24 | BITMAPV4INFOHEADER + : صورة JPEG للطباعة [ 13 ] |
| 5 | BI_PNG | BITMAPV4INFOHEADER + : صورة PNG للطباعة [ 13 ] | |
| 6 | حقول الأبجدية الثنائية | أقنعة حقل بت RGBA | نظام التشغيل Windows CE 5.0 فقط مع .NET 4.0 أو أحدث |
| 11 | BI_CMYK | لا أحد | ملفات تعريف ويندوز فقط CMYK [ 4 ] |
| 12 | BI_CMYKRLE8 | RLE-8 | ملفات تعريف ويندوز فقط CMYK |
| 13 | BI_CMYKRLE4 | RLE-4 | ملفات تعريف ويندوز فقط CMYK |
يحتوي OS/2 2.x OS22XBITMAPHEADER ( BITMAPINFOHEADER2 في وثائق IBM) على 24 بايت إضافية: [ 3 ]
| الإزاحة (بايت) | الحجم (بايت) | OS/2 OS22XBITMAPHEADER ( BITMAPINFOHEADER2 ) [ 3 ] |
|---|---|---|
| 54 | 2 | قيمة مُعَدَّة تُحدد وحدات الدقة الأفقية والرأسية (الإزاحات 38 و42). القيمة الوحيدة المُحددة هي 0، أي بكسل لكل متر. |
| 56 | 2 | الحشو. يتم تجاهله ويجب أن يكون صفرًا |
| 58 | 2 | قيمة مُعدّدة تُشير إلى اتجاه ملء البتات للصورة النقطية. القيمة الوحيدة المُحددة هي 0، ما يعني أن نقطة الأصل هي الزاوية السفلية اليسرى. تُملأ البتات من اليسار إلى اليمين، ثم من الأسفل إلى الأعلى. لاحظ أن صور ويندوز النقطية (التي لا تتضمن هذا الحقل) يمكنها أيضًا تحديد نقطة أصل في الزاوية العلوية اليسرى (حيث تملأ البتات من اليسار إلى اليمين، ثم من الأعلى إلى الأسفل) باستخدام قيمة سالبة لارتفاع الصورة. |
| 60 | 2 | قيمة مُعدّدة تشير إلى خوارزمية التظليل النصفي التي يجب استخدامها عند عرض الصورة. |
| 62 | 4 | معامل التظليل النصفي 1 (انظر أدناه) |
| 66 | 4 | معامل التظليل النصفي 2 (انظر أدناه) |
| 70 | 4 | قيمة مُعدّدة تُشير إلى ترميز اللون لكل عنصر في جدول الألوان. القيمة الوحيدة المُحددة هي 0، والتي تُشير إلى RGB. |
| 74 | 4 | معرّف مُحدد من قِبل التطبيق. لا يُستخدم لعرض الصور. |
يمكن أن تكون خوارزمية التظليل النصفي (الإزاحة 60) كالتالي:
| قيمة | خوارزمية التظليل النصفي | تعليق |
|---|---|---|
| 0 | لا أحد | الأكثر شيوعاً |
| 1 | انتشار الخطأ | يمثل معامل التظليل النصفي 1 (الإزاحة 64) نسبة تخميد الخطأ. تشير القيمة 100 إلى عدم وجود تخميد، بينما تشير القيمة 0 إلى عدم انتشار الأخطاء. |
| 2 | باندا: خوارزمية معالجة للحصول على المستندات غير المشفرة | تمثل معلمات التظليل النصفية 1 و2 (الإزاحات 64 و68 على التوالي) الأبعاد X وY، بالبكسل على التوالي، لنمط التظليل النصفي المستخدم |
| 3 | دائرة فائقة | تمثل معلمات التظليل النصفية 1 و2 (الإزاحات 64 و68 على التوالي) الأبعاد X وY، بالبكسل على التوالي، لنمط التظليل النصفي المستخدم |
جدول الألوان
يظهر جدول الألوان (لوحة الألوان) في ملف صورة BMP مباشرةً بعد رأس ملف BMP، ورأس DIB، وبعد أقنعة البتات الثلاثة أو الأربعة الاختيارية في حال استخدام رأس BITMAPINFOHEADER مع خيار BI_BITFIELDS (12 بايت) أو BI_ALPHABITFIELDS (16 بايت). وبالتالي، فإن إزاحته تساوي حجم رأس BITMAPFILEHEADER مضافًا إليه حجم رأس DIB (بالإضافة إلى 12-16 بايت اختيارية لأقنعة البتات الثلاثة أو الأربعة). ملاحظة: في نظام التشغيل Windows CE، يمكن استخدام رأس BITMAPINFOHEADER مع خيار BI_ALPHABITFIELDS [ 14 ] في عنصر biCompression.
عدد عناصر لوحة الألوان إما 2^ n (حيث n هو عدد البتات لكل بكسل) أو عدد أصغر مُحدد في رأس الملف (في تنسيق رأس BITMAPCOREHEADER لنظام التشغيل OS/2 ، لا تُدعم إلا لوحة الألوان كاملة الحجم). [ 3 ] [ 5 ] في معظم الحالات، يشغل كل عنصر في جدول الألوان 4 بايتات، بالترتيب: أزرق، أخضر، أحمر، 0x00 (انظر أدناه للاستثناءات). يُفهرس هذا في BITMAPINFOHEADER ضمن عنصر البنية biBitCount.
جدول الألوان عبارة عن كتلة من البايتات (جدول) تُدرج الألوان المستخدمة في الصورة. يُوصف كل بكسل في صورة ملونة مُفهرسة بعدد من البتات (1 أو 2 أو 4 أو 8)، وهو فهرس للون واحد مُحدد في هذا الجدول. الغرض من لوحة الألوان في الصور النقطية الملونة المُفهرسة هو إعلام التطبيق باللون الفعلي الذي تُقابله كل قيمة من قيم الفهرس. أما الغرض من جدول الألوان في الصور النقطية غير المُفهرسة (غير المُعتمدة على لوحة ألوان) فهو سرد الألوان المستخدمة في الصورة النقطية لأغراض التحسين على الأجهزة ذات إمكانيات عرض الألوان المحدودة، ولتسهيل التحويل المستقبلي إلى تنسيقات بكسل مختلفة واعتماد لوحة ألوان.
تُحدد الألوان في جدول الألوان عادةً بتنسيق ARGB32 ذي 4 بايت لكل مدخل . أما جدول الألوان المستخدم مع وحدة BITMAPCOREHEADER في نظام التشغيل OS/2 فيستخدم تنسيق RGB24 ذي 3 بايت لكل مدخل . [ 3 ] [ 5 ] بالنسبة لملفات DIB المحملة في الذاكرة، يمكن أن يتكون جدول الألوان اختياريًا من مدخلات ثنائية البايت - تُشكل هذه المدخلات مؤشرات إلى لوحة الألوان المُطبقة حاليًا [ 7 ] بدلًا من تعريفات ألوان RGB الصريحة.
لا تمنع مايكروسوفت وجود قناع بت صالح لقناة ألفا [ 15 ] في BITMAPV4HEADER و BITMAPV5HEADER للصور الملونة المفهرسة بدقة 1 بت لكل بكسل، و4 بت لكل بكسل، و8 بت لكل بكسل، مما يشير إلى إمكانية تحديد مكون ألفا في إدخالات جدول الألوان باستخدام التنسيق 8.8.8.[0-8].[0-8] عبر العنصر RGBQUAD.rgbReserved [ 16 ] . مع ذلك، تمنع بعض إصدارات وثائق مايكروسوفت هذه الميزة، حيث تنص على أن قيمة العنصر RGBQUAD.rgbReserved "يجب أن تكون صفرًا".
كما ذُكر سابقًا، لا يُستخدم جدول الألوان عادةً عندما تكون وحدات البكسل بتنسيق 16 بت لكل بكسل (16bpp) (أو أعلى)؛ إذ لا توجد عادةً مدخلات لجدول الألوان في ملفات الصور النقطية هذه. مع ذلك، تُشير وثائق مايكروسوفت (على موقع MSDN بتاريخ 16 نوفمبر 2010 [ 17 ] ) إلى أنه بالنسبة لتنسيق 16bpp (أو أعلى)، يُمكن وجود جدول الألوان لتخزين قائمة ألوان مُخصصة للتحسين على الأجهزة ذات إمكانيات عرض الألوان المحدودة، مع الإشارة أيضًا إلى أنه في هذه الحالات، لا توجد مدخلات لوحة ألوان مُفهرسة في جدول الألوان هذا. قد يبدو هذا مُتناقضًا إذا لم يتم التمييز بين مدخلات لوحة الألوان الإلزامية وقائمة الألوان الاختيارية.
تخزين البكسل
تُجمّع البتات التي تُمثل بكسلات الصورة النقطية في صفوف (تُعرف أيضًا بالخطوات أو خطوط المسح). ويتم تقريب حجم كل صف إلى مُضاعفات العدد 4 بايت (قيمة DWORD من 32 بت ) عن طريق الحشو. [ 18 ]
بالنسبة للصور التي يزيد ارتفاعها عن 1، يتم تخزين صفوف متعددة محشوّة بشكل متتابع، مما يشكل مصفوفة بكسل.
يمكن حساب إجمالي عدد البايتات اللازمة لتخزين صف واحد من البكسلات على النحو التالي:
يمكن حساب إجمالي عدد البايتات اللازمة لتخزين مصفوفة من البكسلات في صورة ذات n بت لكل بكسل (bpp)، مع 2^ n لون، من خلال مراعاة تأثير تقريب حجم كل صف إلى مضاعفات 4 بايت، كما يلي:
مصفوفة البكسل (بيانات الصورة النقطية)
مصفوفة البكسل عبارة عن كتلة من قيم DWORD ذات 32 بت، تصف الصورة بكسلًا بكسلًا. عادةً ما تُخزَّن البكسلات "من الأسفل إلى الأعلى"، بدءًا من الزاوية السفلية اليسرى، مرورًا باليسار إلى اليمين، ثم صفًا تلو الآخر من أسفل الصورة إلى أعلاها. [ 5 ] ما لم يُستخدم BITMAPCOREHEADER ، يمكن أيضًا تخزين صور Windows النقطية غير المضغوطة من الأعلى إلى الأسفل، عندما تكون قيمة ارتفاع الصورة سالبة.
في نظام التشغيل OS/2 DIB الأصلي، كانت القيم الأربع المسموح بها لعمق اللون هي 1 و4 و8 و24 بت لكل بكسل. [ 5 ] تسمح رؤوس DIB الحديثة بتنسيقات بكسل ذات 1 و2 و4 و8 و16 و24 و32 بت لكل بكسل. [ 19 ] كما يسمح GDI+ بـ 64 بت لكل بكسل. [ 20 ]
يجب إضافة بايتات حشو (ليس بالضرورة صفرًا) إلى نهاية الصفوف لزيادة طولها إلى مضاعفات العدد 4 بايت. عند تحميل مصفوفة البكسل في الذاكرة، يجب أن يبدأ كل صف من عنوان ذاكرة من مضاعفات العدد 4. هذا القيد على العنوان/الإزاحة إلزامي فقط لمصفوفات البكسل المحملة في الذاكرة. لأغراض تخزين الملفات، يجب أن يكون حجم كل صف من مضاعفات العدد 4 بايت، بينما يمكن أن تكون إزاحة الملف اختيارية. [ 5 ] تحتوي خريطة بتية 24 بت بعرض 1 على 3 بايتات من البيانات لكل صف (أزرق، أخضر، أحمر) وبايت واحد للحشو، بينما تحتوي الخريطة بعرض 2 على 6 بايتات من البيانات وبايتين للحشو، وتحتوي الخريطة بعرض 3 على 9 بايتات من البيانات و3 بايتات للحشو، وتحتوي الخريطة بعرض 4 على 12 بايت من البيانات بدون حشو.
ضغط
- يمكن ضغط الصور الملونة المفهرسة باستخدام خوارزمية RLE ذات 4 بت أو 8 بت أو خوارزمية Huffman 1D.
- يمكن ضغط صور OS/2 BITMAPCOREHEADER 2 24bpp باستخدام خوارزمية RLE ذات 24 بت.
- يتم تخزين الصور ذات الدقة 16 بت لكل بكسل و 32 بت لكل بكسل دائمًا بدون ضغط.
- لاحظ أنه يمكن تخزين الصور بجميع درجات الألوان دون ضغط إذا رغبت في ذلك.
تنسيق البكسل
- يدعم تنسيق البت الواحد لكل بكسل (1bpp) لونين مختلفين (على سبيل المثال: الأسود والأبيض). تُخزَّن قيم البكسل في كل بت، حيث يكون البكسل الأول (الأيسر) في البت الأكثر أهمية من البايت الأول. [ 5 ] يُمثِّل كل بت فهرسًا في جدول لونين. يشير البت غير المُعيَّن إلى أول مدخل في جدول الألوان، بينما يشير البت المُعيَّن إلى آخر مدخل (ثاني) في جدول الألوان.
- يدعم تنسيق 2 بت لكل بكسل (2bpp) أربعة ألوان مميزة ويخزن 4 بكسلات لكل بايت واحد، حيث يكون البكسل الأيسر في البتتين الأكثر أهمية (خاص بنظام Windows CE فقط: [ 21 ] ). تمثل قيمة كل بكسل فهرسًا ثنائي البت في جدول يصل إلى 4 ألوان.
- يدعم تنسيق 4 بت لكل بكسل (4bpp) 16 لونًا مميزًا ويخزن بكسلين لكل بايت واحد، حيث يكون البكسل الأيسر في النصف الأكثر أهمية . [ 5 ] كل قيمة بكسل هي فهرس 4 بت في جدول يصل إلى 16 لونًا.
- يدعم تنسيق 8 بت لكل بكسل (8bpp) 256 لونًا مميزًا ويخزن بكسلًا واحدًا لكل بايت. كل بايت هو فهرس في جدول يصل إلى 256 لونًا.
- يدعم تنسيق 16 بت لكل بكسل (16bpp) 65536 لونًا مميزًا ويخزن بكسلًا واحدًا لكل كلمة (WORD) مكونة من بايتين. يمكن لكل كلمة (WORD) تحديد عينات ألفا والأحمر والأخضر والأزرق للبكسل.
- يدعم تنسيق 24 بت لكل بكسل (24bpp) 16,777,216 لونًا مميزًا، ويخزن قيمة بكسل واحدة لكل 3 بايتات. تحدد كل قيمة بكسل عينات اللون الأحمر والأخضر والأزرق للبكسل (8.8.8.0.0 في ترميز RGBAX). تحديدًا، بالترتيب: الأزرق، ثم الأخضر، ثم الأحمر (8 بتات لكل عينة). [ 5 ]
- يدعم تنسيق 32 بت لكل بكسل (32bpp) 4,294,967,296 لونًا مميزًا، ويخزن بكسلًا واحدًا في كل قيمة DWORD بحجم 4 بايت. يمكن لكل قيمة DWORD تحديد عينات ألفا والأحمر والأخضر والأزرق للبكسل.
لحلّ الغموض المتعلق بتحديد البتات المسؤولة عن كل عينة، توفر رؤوس DIB قيمًا افتراضية معينة بالإضافة إلى حقول بت محددة، وهي عبارة عن أقنعة بت تحدد انتماء مجموعة معينة من البتات في بكسل إلى قناة معينة . يوضح الرسم التخطيطي التالي هذه الآلية:
يجب أن تكون حقول العينة المُعرَّفة بواسطة أقنعة بت BITFIELDS متجاورة وغير متداخلة، ولكن ترتيب حقول العينة اختياري. الترتيب الأكثر شيوعًا هو: ألفا، أزرق، أخضر، أحمر (من البت الأكثر أهمية إلى البت الأقل أهمية). أقنعة البت الأحمر والأخضر والأزرق صالحة فقط عندما يكون عنصر الضغط في رأس DIB مُعيَّنًا على BI_BITFIELDS. قناع البت ألفا صالح كلما كان موجودًا في رأس DIB أو عندما يكون عنصر الضغط في رأس DIB مُعيَّنًا على BI_ALPHABITFIELDS [ 14 ] ( خاص بنظام Windows CE فقط).
أنواع فرعية لفيديو RGB
تسمح آلية BITFELD الموضحة أعلاه بتعريف عشرات الآلاف من تنسيقات البكسل المختلفة، ولكن لا يتم استخدام سوى عدد قليل منها عمليًا، [ 22 ] جميع التنسيقات ذات الألوان المحددة RGB8 وRGB4 وRGB1 (المميزة باللون الأصفر في الجدول أعلاه، والمحددة في dshow.hأسماء .MEDIASUBTYPE):
| RGBAX | النمط الفرعي RGB | RGBAX | النمط الفرعي ARGB |
|---|---|---|---|
| 8.8.8.0.8 | RGB32 | 8.8.8.8.0 | ARGB32 |
| 10.10.10.2.0 | A2R10G10B10 | ||
| 8.8.8.0.0 | RGB24 | 10.10.10.2.0 | A2B10G10R10 |
| 5.6.5.0.0 | RGB565 | 4.4.4.4.0 | ARGB4444 |
| 5.5.5.0.1 | RGB555 | 5.5.5.1.0 | ARGB1555 |
| بتفيلد | إزاحة (عرافة) | البتات A2R10G10B10 | البتات A2B10G10R10 | ||||
|---|---|---|---|---|---|---|---|
| أحمر | 36 | 00 00 F0 3F | LE:3FF00000 | 20...29 | FF 03 00 00 | LE:000003FF | 0... 9 |
| أخضر | 3أ | 00 FC 0F 00 | LE:000FFC00 | 10...19 | 00 FC 0F 00 | LE:000FFC00 | 10...19 |
| أزرق | 3E | FF 03 00 00 | LE:000003FF | 0... 9 | 00 00 F0 3F | LE:3FF00000 | 20...29 |
| ألفا | 42 | 00 00 00 C0 | LE:C0000000 | 30...31 | 00 00 00 C0 | LE:C0000000 | 30...31 |
في الإصدار 2.1.4، دعم برنامج FFmpeg (بحسب مصطلحاته الخاصة) تنسيقات بكسل BMP التالية: bgra، bgr24، rgb565le، rgb555le، rgb444le، rgb8، bgr8، rgb4_byte، bgr4_byte، gray، pal8، و monob ؛ أي أن bgra كان تنسيق البكسل الوحيد المدعوم مع خاصية الشفافية. [ 24 ]

المثال 1
فيما يلي مثال على صورة نقطية بحجم 2×2 بكسل، 24 بت (رأس DIB لنظام التشغيل Windows BITMAPINFOHEADER ) بتنسيق بكسل RGB24.
| إزاحة (عرافة) | مقاس (بايت) | القيمة السداسية عشرية | قيمة | وصف |
|---|---|---|---|---|
| رأس ملف BMP | ||||
| ٠٠ | 2 | 42 4D | "BM" | حقل المعرف ( 42 4D) |
| 02 | 4 | 46 00 00 00 | 70 بايت (54+16) | حجم ملف BMP (54 بايت للرأس + 16 بايت للبيانات) |
| 06 | 2 | ٠٠ ٠٠ | غير مستخدم | خاص بالتطبيق |
| 08 | 2 | ٠٠ ٠٠ | غير مستخدم | خاص بالتطبيق |
| 0A | 4 | 36 00 00 00 | 54 بايت (14+40) | الإزاحة التي يمكن من خلالها العثور على مصفوفة البكسل (بيانات الصورة النقطية) |
| رأس DIB | ||||
| 0E | 4 | 28 00 00 00 | 40 بايت | عدد البايتات في رأس DIB (من هذه النقطة) |
| 12 | 4 | 02 00 00 00 | 2 بكسل (من اليسار إلى اليمين) | عرض الصورة النقطية بالبكسل |
| 16 | 4 | 02 00 00 00 | 2 بكسل (من الأسفل إلى الأعلى) | ارتفاع الصورة النقطية بالبكسل. القيمة الموجبة تعني ترتيب البكسلات من الأسفل إلى الأعلى. |
| 1أ | 2 | 01 00 | طائرة واحدة | عدد مستويات الألوان المستخدمة |
| 1C | 2 | 18 00 | 24 بت | عدد البتات لكل بكسل |
| 1E | 4 | ٠٠ ٠٠ ٠٠ ٠٠ | 0 | BI_RGB، لم يتم استخدام ضغط مصفوفة البكسل |
| 22 | 4 | 10 00 00 00 | 16 بايت | حجم بيانات الصورة النقطية الخام (بما في ذلك الحشو) |
| 26 | 4 | 13 0B 00 00 | 2835 بكسل/متر أفقي | دقة طباعة الصورة، 72 نقطة في البوصة × 39.3701 بوصة لكل متر، تساوي 2834.6472 |
| 2أ | 4 | 13 0B 00 00 | 2835 بكسل/متر عمودي | |
| 2E | 4 | ٠٠ ٠٠ ٠٠ ٠٠ | صفر ألوان | عدد الألوان في لوحة الألوان |
| 32 | 4 | ٠٠ ٠٠ ٠٠ ٠٠ | لا توجد ألوان مهمة | الصفر يعني أن جميع الألوان مهمة |
| بداية مصفوفة البكسل (بيانات الصورة النقطية) | ||||
| 36 | 3 | ٠٠ ٠٠ FF | 0 0 255 | أحمر، بكسل (س=0، ص=1) |
| 39 | 3 | FF FF FF | 255 255 255 | أبيض، بكسل (س=1، ص=1) |
| 3C | 2 | ٠٠ ٠٠ | 0 0 | حشو لمحاذاة 4 بايت (قد تكون قيمة أخرى غير الصفر) |
| 3E | 3 | FF 00 00 | 255 0 0 | أزرق، بكسل (س=0، ص=0) |
| 41 | 3 | 00 FF 00 | 0 255 0 | أخضر، بكسل (س=1، ص=0) |
| 44 | 2 | ٠٠ ٠٠ | 0 0 | حشو لمحاذاة 4 بايت (قد تكون قيمة أخرى غير الصفر) |

المثال 2
فيما يلي مثال على صورة نقطية بحجم 4×2 بكسل، 32 بت مع قيم الشفافية في قناة ألفا (رأس DIB لنظام التشغيل Windows BITMAPV4HEADER ) بتنسيق بكسل ARGB32.
| إزاحة (عرافة) | مقاس (بايت) | القيمة السداسية عشرية | قيمة | وصف |
|---|---|---|---|---|
| رأس ملف BMP | ||||
| ٠٠ | 2 | 42 4D | "BM" | حقل المعرف (42 ساعة، 4 ساعات) |
| 02 | 4 | 9A 00 00 00 | 154 بايت (122+32) | حجم ملف BMP |
| 06 | 2 | ٠٠ ٠٠ | غير مستخدم | خاص بالتطبيق |
| 08 | 2 | ٠٠ ٠٠ | غير مستخدم | خاص بالتطبيق |
| 0A | 4 | 7A 00 00 00 | 122 بايت (14+108) | الإزاحة التي يمكن من خلالها العثور على مصفوفة البكسل (بيانات الصورة النقطية) |
| رأس DIB | ||||
| 0E | 4 | 6C 00 00 00 | 108 بايت | عدد البايتات في رأس DIB (من هذه النقطة) |
| 12 | 4 | 04 00 00 00 | 4 بكسل (من اليسار إلى اليمين) | عرض الصورة النقطية بالبكسل |
| 16 | 4 | 02 00 00 00 | 2 بكسل (من الأسفل إلى الأعلى) | ارتفاع الصورة النقطية بالبكسل |
| 1أ | 2 | 01 00 | طائرة واحدة | عدد مستويات الألوان المستخدمة |
| 1C | 2 | 20 00 | 32 بت | عدد البتات لكل بكسل |
| 1E | 4 | 03 00 00 00 | 3 | BI_BITFIELDS، لم يتم استخدام ضغط مصفوفة البكسل |
| 22 | 4 | 20 00 00 00 | 32 بايت | حجم بيانات الصورة النقطية الخام (بما في ذلك الحشو) |
| 26 | 4 | 13 0B 00 00 | 2835 بكسل/متر أفقي | دقة طباعة الصورة، 72 نقطة في البوصة × 39.3701 بوصة لكل متر، تساوي 2834.6472 |
| 2أ | 4 | 13 0B 00 00 | 2835 بكسل/متر عمودي | |
| 2E | 4 | ٠٠ ٠٠ ٠٠ ٠٠ | صفر ألوان | عدد الألوان في لوحة الألوان |
| 32 | 4 | ٠٠ ٠٠ ٠٠ ٠٠ | لا توجد ألوان مهمة | الصفر يعني أن جميع الألوان مهمة |
| 36 | 4 | ٠٠ ٠٠ FF ٠٠ | 00FF0000 بنظام big-endian | قناع بت القناة الحمراء (صالح لأن BI_BITFIELDS محدد) |
| 3أ | 4 | 00 FF 00 00 | 0000FF00 بنظام بيج-إنديان | قناع بت القناة الخضراء (صالح لأن BI_BITFIELDS محدد) |
| 3E | 4 | FF 00 00 00 | 000000FF بنظام big-endian | قناع بت القناة الزرقاء (صالح لأن BI_BITFIELDS محدد) |
| 42 | 4 | ٠٠ ٠٠ ٠٠ FF | FF000000 بنظام big-endian | قناع بت قناة ألفا |
| 46 | 4 | 20 6E 69 57 | ترتيب البايتات الصغير " Win " | LCS_WINDOWS_COLOR_SPACE |
| 4أ | 36 | ٠٠...٠٠ | نقاط نهاية مساحة الألوان CIEEXYZTRIPLE | غير مستخدم لـ LCS " Win " أو " sRGB" |
| 6E | 4 | ٠٠ ٠٠ ٠٠ ٠٠ | 0 جاما أحمر | غير مستخدم لـ LCS " Win " أو " sRGB" |
| 72 | 4 | ٠٠ ٠٠ ٠٠ ٠٠ | 0 جاما الأخضر | غير مستخدم لـ LCS " Win " أو " sRGB" |
| 76 | 4 | ٠٠ ٠٠ ٠٠ ٠٠ | 0 غاما الأزرق | غير مستخدم لـ LCS " Win " أو " sRGB" |
| بداية مصفوفة البكسل (بيانات الصورة النقطية) | ||||
| 7أ | 4 | FF 00 00 7F | 255 0 0 127 | أزرق (ألفا: 127)، بكسل (س=0، ص=1) |
| 7E | 4 | 00 FF 00 7F | 0 255 0 127 | أخضر (ألفا: 127)، بكسل (س=1، ص=1) |
| 82 | 4 | 00 00 FF 7F | 0 0 255 127 | أحمر (ألفا: 127)، بكسل (س=2، ص=1) |
| 86 | 4 | FF FF FF 7F | 255 255 255 127 | أبيض (ألفا: 127)، بكسل (س=3، ص=1) |
| 8أ | 4 | FF 00 00 FF | 255 0 0 255 | أزرق (ألفا: 255)، بكسل (س=0، ص=0) |
| 8E | 4 | 00 FF 00 FF | 0 255 0 255 | أخضر (ألفا: 255)، بكسل (س=1، ص=0) |
| 92 | 4 | ٠٠ ٠٠ FF FF | 0 0 255 255 | أحمر (ألفا: 255)، بكسل (س=2، ص=0) |
| 96 | 4 | FF FF FF FF | 255 255 255 255 | أبيض (ألفا: 255)، بكسل (س=3، ص=0) |
لاحظ أن بيانات الصورة النقطية تبدأ من الزاوية السفلية اليسرى للصورة.
استخدام تنسيق BMP
إن بساطة تنسيق ملفات BMP، وانتشاره الواسع في نظام التشغيل ويندوز وغيره، بالإضافة إلى كونه موثقًا بشكل جيد نسبيًا ومفتوح المصدر ، تجعله تنسيقًا شائعًا جدًا يمكن لبرامج معالجة الصور من أنظمة تشغيل متعددة قراءته وكتابته. تحتوي ملفات ICO وCUR على صور نقطية تبدأ بـ BITMAPINFOHEADER.
استخدمت العديد من واجهات المستخدم الرسومية القديمة الصور النقطية في أنظمة الرسومات الفرعية المدمجة بها؛ [ 25 ] على سبيل المثال، نظام GDI الفرعي لمنصات Microsoft Windows و OS/2 ، حيث يكون التنسيق المحدد المستخدم هو تنسيق ملف الصور النقطية لنظامي Windows و OS/2 ، والذي عادة ما يكون اسمه بامتداد الملف.BMP . [ 26 ]
على الرغم من أن معظم ملفات BMP تتميز بحجم كبير نسبيًا نظرًا لعدم وجود أي ضغط (أو استخدام ترميز طول التشغيل بنسبة منخفضة عمومًا على الصور المُجمّعة)، إلا أنه يمكن ضغط العديد من ملفات BMP بشكل كبير باستخدام خوارزميات ضغط البيانات غير الفاقد للبيانات مثل ZIP لاحتوائها على بيانات زائدة. بل إن بعض التنسيقات، مثل RAR ، تتضمن إجراءات مُخصصة لضغط هذه البيانات بكفاءة.
التنسيقات ذات الصلة
يستخدم نظام X Window تنسيق XBM مشابهًا للصور بالأبيض والأسود، وتنسيق XPM ( خريطة البكسل ) للصور الملونة. كما توجد مجموعة متنوعة من تنسيقات "الخام"، التي تحفظ البيانات الخام دون أي معلومات أخرى. وتوجد أيضًا تنسيقات Portable Pixmap (PPM) و Truevision TGA ، ولكنها أقل استخدامًا ، أو تُستخدم لأغراض خاصة فقط؛ فعلى سبيل المثال، يمكن أن يحتوي تنسيق TGA على معلومات الشفافية.
مراجع
- ↑ "اعتبارات IANA" . أنواع وسائط صور ويندوز . IETF . القسم 5. doi : 10.17487/RFC7903 . RFC 7903 .
- 1 2 3 جيمس د. موراي؛ ويليام فان رايبر (أبريل 1996). موسوعة تنسيقات ملفات الرسومات (الطبعة الثانية ). أورايلي . bmp . ISBN 1-56592-161-5تم الاطلاع عليه بتاريخ 2014-03-07 .
- 1 2 3 4 5 6 7 8 جيمس د. موراي؛ ويليام فان رايبر (أبريل 1996). موسوعة تنسيقات ملفات الرسومات (الطبعة الثانية ). أورايلي . os2bmp . ISBN 1-56592-161-5تم الاطلاع عليه بتاريخ 2014-03-07 .
- 1 2 "[MS-WMF]: تنسيق ملفات تعريف ويندوز" . MSDN . 2014-02-13 . تم الاسترجاع في 2014-03-12 .
- 1 2 3 4 5 6 7 8 9 10 "ملفات DIB واستخداماتها" . مساعدة ودعم مايكروسوفت . تم الاطلاع عليه بتاريخ 14-05-2015 .
- 1 2 3 أنواع رؤوس الصور النقطية في MSDN
- 1 2 3 بنية MSDN
- ↑ فينغ يوان - برمجة الرسومات في ويندوز: Win32 GDI و DirectDraw: Packed Device-Independent Bitmap (CreateDIBPatternBrush, CreateDIBPatternBrushPt, FindResource, LoadResource, LockResource)
- ↑ سامرز، جيسون (30-10-2015). "pal8os2v2-16.bmp" . تم الاسترجاع في 6-7-2016 .
- ↑ سامرز، جيسون (30-10-2015). "مجموعة برامج BMP" . تم الاسترجاع في 6-7-2016 .
- ↑ كوكس، كريس (15 نوفمبر 2010). "تنسيق BMP غير صالح مع قناة ألفا" . منتدى فوتوشوب ويندوز . أدوبي . مؤرشف من الأصل في 27 يناير 2015. تم الاطلاع عليه في 22 مايو 2016 .
- ↑ "Microsoft Windows Bitmap: ملخص من موسوعة تنسيقات ملفات الرسومات" .
- 1 2 "امتدادات JPEG و PNG لوظائف وهياكل الصور النقطية المحددة" .
- 1 2 MSDN - BITMAPINFOHEADER (Windows CE 5.0): BI_ALPHABITFIELDS في عنصر biCompression
- ↑ MSDN – BITMAPV4HEADER : العنصر bV4AlphaMask
- ↑ MSDN – RGBQUAD: عضو محجوز في rgb
- ↑ انظر الملاحظة تحت biClrUsed MSDN BITMAPINFOHEADER
- ↑ "Image Stride - تطبيقات Win32" . learn.microsoft.com .
- ↑ MSDN - BITMAPINFOHEADER : العضو biBitCount
- ↑ "أنواع الصور النقطية" . MSDN . 2012-06-03 . تم الاطلاع عليه بتاريخ 2014-03-16 .
- ↑ MSDN: Windows CE - بنية BITMAPINFOHEADER
- 1 2 أدوبي فوتوشوب: صيغة BMP، مؤرشفة بتاريخ 22-09-2011 في أرشيف الإنترنت (Wayback Machine).
- 1 2 "أنواع فرعية لفيديو RGB غير المضغوط" . dshow.h . MSDN . تم الاسترجاع في 11-03-2014 .
- ↑ "تنسيقات الصور" . وثائق FFmpeg العامة . 2014. تم الاطلاع عليه بتاريخ 23-02-2014 .
- ↑ جوليان سمارت؛ ستيفان تشومور وكيفن هوك (2006). برمجة واجهات المستخدم الرسومية متعددة المنصات باستخدام Wxwidgets . برنتيس هول. ISBN 0-13-147381-6.
- ↑ "ملف صورة نقطية (BMP)، الإصدار 5" . الحفظ الرقمي . مكتبة الكونغرس . 2014-01-08 . تاريخ الاسترجاع 2014-03-11 .
روابط خارجية
- بنية ملفات الصور النقطية ، على موقع digicamsoft.com
- مقدمة عن ملفات DIB (الصور النقطية المستقلة عن الجهاز) ، على موقع herdsoft.com
- فئة بسيطة لتحميل الصور النقطية بلغة C++ ، متوفرة على kalytta.com (A2R10G10B10 غير متوفرة بعد)(مدعوم)
- تنسيق ملف BMP، الجزء 1 بقلم ديفيد شارلاب في مجلة دكتور دوب لأدوات البرمجيات (drdobbs.com)، مارس 1995
- تنسيقات ملفات الرسومات النقطية
- تقنية الوسائط المتعددة لنظام التشغيل مايكروسوفت ويندوز
