انتقل إلى المحتوى الرئيسي

صيغ الملفات

ما هو BMP؟ شرح مبسّط لصيغة الصور النقطية Bitmap

BMP هي صيغة الصور النقطية في Windows، غير مضغوطة وبلا فقد. نشرح بنية ترويساتها وأعماق الألوان فيها وحدودها وكيف تجعل ملفاتها أصغر.

الكاتب: Hemen Dönüştür Editör Ekibiتاريخ النشر: 7 دقائق قراءة

صورة غلاف لدليل صيغة ملفات BMP

تُعدّ BMP من أقدم صيغ الصور وأبسطها في عالم Windows. فملف BMP يكتب البكسلات على القرص عادةً صفًّا بعد صف دون أي ضغط على الإطلاق. هذه البساطة تجعله سهل القراءة وخاليًا من الفقد، وهي نفسها ما يجعل ملفاته ضخمة. يتناول هذا المقال أصل BMP، وما يحتويه الملف، وتفاصيل عمق الألوان والشفافية، وأين ما زلت تصادفها اليوم، وكيف تحوّل ملفات BMP إلى صيغ أكثر عملية.

ما هو BMP؟

BMP (أي bitmap، بالامتداد .bmp) صيغة ملفات صور نقطية قائمة على البكسلات. وتسمّيها الوثائق التقنية أيضًا DIB، أي الصورة النقطية المستقلة عن الجهاز. ويعني "المستقلة عن الجهاز" أن الصورة تُفسَّر بالطريقة نفسها أيًّا كانت بطاقة الرسوميات أو الطابعة التي أُنشئت عليها: فالملف يحمل في ترويسته وجدول ألوانه المعلومات اللازمة لفك ألوانه.

ووفقًا لوثائق Win32 من Microsoft، يبدأ ملف الصورة النقطية ببنية BITMAPFILEHEADER، تليها BITMAPINFOHEADER أو BITMAPV4HEADER أو BITMAPV5HEADER، ثم جدول ألوان اختياري، وأخيرًا بيانات البكسلات. ونوع MIME الخاص بها هو image/bmp.

لمحة تاريخية: من Windows وOS/2 حتى اليوم

نشأت BMP من عمل مشترك بين Microsoft وIBM على Windows وOS/2 في أواخر الثمانينيات. وكانت الصور النقطية في عهد Windows 1.0 مرتبطة بشدة بجهاز الإخراج؛ ثم انتشر الشكل المستقل عن الجهاز مع Windows 3.0 عام 1990. أما ترويسة BITMAPCOREHEADER بحجم 12 بايت المعرّفة لمدير العرض في OS/2 (Presentation Manager)، فهي سبب استمرار الحديث عن ملفات "OS/2 BMP" حتى اليوم.

وعلى مرّ السنين توسّعت الصيغة بإضافة حقول إلى نهاية الترويسة. وبحسب وصف الصيغة لدى مكتبة الكونغرس، جاء الإصدار 5 مع Windows 98 عام 1998 وأتاح تسجيل ملفات تعريف الألوان ICC داخل الملف. وأحجام الترويسات الشائعة اليوم هي:

الترويسةالحجمأبرز إضافة
BITMAPCOREHEADER12 بايتبنية أساسية متوافقة مع OS/2 1.x
BITMAPINFOHEADER40 بايتالترويسة الأكثر شيوعًا منذ Windows 3.0؛ حقول الضغط والدقة
BITMAPV4HEADER108 بايتأقنعة الألوان وقناع ألفا ومعلومات فضاء الألوان
BITMAPV5HEADER124 بايتملفات تعريف ICC مضمّنة أو مرتبطة، ونيّة العرض

تتعرّف برامج القراءة على الترويسة المستخدمة من قيمة الحجم في حقلها الأول. وهذا يتيح للبرامج القديمة تجاهل الحقول الأحدث مع الاستمرار في قراءة الأساسيات.

ماذا يوجد داخل ملف BMP؟

ترويسة الملف وتوقيع "BM"

يبدأ كل ملف BMP بترويسة ملف بحجم 14 بايت، أول بايتين فيها هما حرفا ASCII ‏BM (بالست عشري 42 4D). وتخزّن الترويسة الحجم الكلي للملف وموضع البايت الذي تبدأ عنده بيانات البكسلات. أما صورة DIB الموضوعة في حافظة Windows (صيغة CF_DIB) فتُسقط هذه البايتات الأربعة عشر وتبدأ مباشرة بترويسة المعلومات.

ترويسة المعلومات

تحمل ترويسة المعلومات العرض والارتفاع وعدد البتات لكل بكسل (biBitCount) ونوع الضغط والدقة الأفقية والرأسية (بالبكسل لكل متر) وعدد الألوان المستخدمة في جدول الألوان.

جدول الألوان (اللوحة)

في الصور ذات 8 بت لكل بكسل أو أقل، لا يكون البكسل لونًا بل رقمًا يشير إلى موضع في جدول الألوان. وفي المثال الموثّق لدى Microsoft، تبلغ مصفوفة البكسلات لصورة نقطية بحجم 32x32 وبـ 16 لونًا ‏32 x 32 x 4 = 4096 بت، لأن 4 بتات تكفي لعنونة 16 لونًا.

بيانات البكسلات: صفوف من الأسفل إلى الأعلى ومحاذاة 4 بايت

لـ BMP سمتان غير مألوفتين. الأولى: إذا كان الارتفاع موجبًا، تُخزَّن الصفوف من الأسفل إلى الأعلى، أي إن أول صف في الملف هو الصف السفلي من الصورة. أما الارتفاع السالب فيخزّن الصفوف من الأعلى إلى الأسفل، لكن مثل هذه الصور لا يمكن ضغطها. والثانية: يُحشى كل صف ليصبح طوله من مضاعفات 4 بايت. وتعطي Microsoft طول الصف (stride) بالصيغة التالية:

stride = ((width * bitCount + 31) & ~31) >> 3
imageSize = |height| * stride

في صورة بحجم 1920x1080 وبعمق 24 بت، يبلغ طول كل صف 1920 x 3 = 5,760 بايت (وهو أصلًا من مضاعفات 4)، فتكون بيانات البكسلات 5,760 x 1,080 = 6,220,800 بايت. ومع الترويسات البالغة 54 بايت يصل حجم الملف إلى نحو 6.2 MB. أما الصورة نفسها بصيغة JPG فتكون عادةً جزءًا صغيرًا من ذلك.

عمق الألوان والضغط والشفافية

تعرّف وثائق BITMAPV5HEADER القيم 1 و4 و8 و16 و24 و32 بت لكل بكسل (والقيمة 0 تعني أن العمق مأخوذ من بيانات JPEG أو PNG مضمّنة). فالبت الواحد أبيض وأسود، و4 بتات تعني 16 لونًا، و8 بتات تعني لوحة من 256 لونًا. وعند 24 بت يكون كل بكسل ثلاثة بايتات بترتيب الأزرق ثم الأخضر ثم الأحمر.

ويمكن أن يأخذ حقل الضغط القيم التالية:

  • BI_RGB: بلا ضغط. وهي عمليًا الغالبية العظمى من ملفات BMP.
  • BI_RLE8 وBI_RLE4: ترميز بسيط لطول التكرار (run-length) لصور اللوحات بعمق 8 بت و4 بت. مفيد للمساحات المسطّحة الكبيرة، وعديم الفائدة تقريبًا للصور الفوتوغرافية.
  • BI_BITFIELDS: ليس ضغطًا؛ بل أقنعة تحدّد مواضع بتات الأحمر والأخضر والأزرق في بكسلات 16 بت و32 بت (مثل RGB 565).
  • BI_JPEG وBI_PNG: تسمحان ببيانات JPEG أو PNG داخل الصورة النقطية. ونادرًا ما تدعمهما برامج العرض العامة.

والشفافية هي أكثر جوانب BMP تضاربًا. فقناع ألفا في ترويستي V4 وV5 يمكنه أن يعرّف البايت الرابع من بكسل 32 بت على أنه درجة العتامة، لكن هذا البايت يوصف في ملف BMP التقليدي بعمق 32 بت بأنه غير مستخدم، وكثير من البرامج تتجاهله. لذا ليس غريبًا أن ترى ملف BMP بعمق 32 بت يبدو شفافًا في برنامج وعلى خلفية سوداء في برنامج آخر. إن كنت تحتاج إلى الشفافية فإن PNG خيار أكثر أمانًا بكثير.

الدعم في الأنظمة والمتصفحات والبرامج

تُفتح BMP في كل مكان تقريبًا. فعارضات Windows المدمجة وبرنامج Paint، وتطبيق Preview في macOS، وعارضات Linux الشائعة كلها تقرؤها. ويذكر دليل صيغ الصور في MDN دعم BMP في جميع إصدارات Chrome وEdge وFirefox وOpera وSafari. ويؤكّد الدليل نفسه كذلك أن ملفات BMP غير المضغوطة كبيرة جدًا مقارنة بـ PNG أو JPG، وأنه ينبغي عمومًا تجنّبها في محتوى المواقع.

أين تُستخدم BMP اليوم؟

  • موارد تطبيقات Windows والبرامج القديمة: ما زالت صور أشرطة الأدوات ورسوم معالجات التثبيت وبعض أصول الألعاب بصيغة BMP.
  • الأنظمة المدمجة والمتحكّمات الدقيقة: لا يحتاج جهاز مزوّد بشاشة إلى مفكّك JPEG؛ إذ يمكن نسخ بيانات البكسلات مباشرة إلى الشاشة.
  • الكاميرات الصناعية والماسحات الضوئية وأدوات الاختبار: حين يلزم إخراج خام بلا فقد، تكون BMP صيغة وسيطة بسيطة.
  • التعليم: بترويسة لا تتجاوز بضع عشرات من البايتات، كثيرًا ما تكون BMP أول صيغة يقرؤها الطلاب ويكتبونها في مقررات معالجة الصور.

نقاط القوة والضعف

نقاط القوةنقاط الضعف
بلا فقد؛ قيم البكسلات لا تتغيّر أبدًابلا ضغط، لذا الملفات كبيرة جدًا
قراءتها وكتابتها في غاية السهولة، بلا كلفة على المعالجدعم غير متّسق للشفافية
تُفتح في كل نظام تشغيل ومتصفح تقريبًادعم ضعيف للبيانات الوصفية (EXIF، الأوصاف)
أوضاع اللوحات تناسب الأجهزة محدودة المواردغير عملية للويب والبريد الإلكتروني ونماذج الرفع

مشكلات شائعة وطرق حلّها

الملف أكبر من أن يُرسل بالبريد أو يُرفع عبر نموذج

هذه هي المشكلة الأكثر شيوعًا. فللصور الفوتوغرافية والمستندات الممسوحة، يؤدي تحويل BMP إلى JPG عادةً إلى تقليص الحجم بمرتبة عشرية أو أكثر. أما لقطات الشاشة والمخططات وكل ما يحوي نصًا فالأفضل تحويل BMP إلى PNG: فـ PNG بلا فقد هي الأخرى لكنها مضغوطة، ولا تضيف التشويش الذي يُحدثه JPG حول الحواف الحادة.

ملف BMP بعمق 32 بت يظهر بخلفية سوداء

البرنامج لا يتعرّف على بايت ألفا أو يقرؤه خطأً. والتحويل إلى PNG يحلّ المشكلة عادةً. وعند التحويل إلى JPG، الذي لا يدعم الشفافية، تُملأ المساحات الشفافة باللون الأبيض أو بلون تختاره.

الصورة مقلوبة أو مائلة

في برنامج قراءة كتبته بنفسك ينتج هذا عادةً عن خطأين: تجاهل أن الصفوف مخزّنة من الأسفل إلى الأعلى، أو عدم تخطّي بايتات الحشو في نهاية كل صف. واستخدام صيغة stride أعلاه والتحقّق من إشارة الارتفاع يمنعان الخطأين كليهما.

برنامج يرفض فتح ملف BMP

بعض برامج القراءة البسيطة لا تدعم ملفات BMP المضغوطة بـ RLE أو التي تستخدم BI_BITFIELDS أو تحوي بيانات JPEG/PNG مضمّنة. وإعادة الحفظ كملف BMP غير مضغوط بعمق 24 بت أو التحويل إلى PNG يزيلان مشكلة التوافق.

نصائح للتحويل

  • JPG للصور الفوتوغرافية وPNG للرسوميات: القاعدة المعتادة تنطبق عند الانتقال من BMP. وللويب يمكنك أيضًا اختيار WebP أو AVIF في محوّل الصور.
  • حافظ على جودة عالية: لأن BMP بلا فقد، فإن جودة JPG بين 85 و90% تعطي نتيجة يصعب تمييزها عن الأصل.
  • صغّر عند الحاجة: إن بقي الملف كبيرًا، فقلّل أبعاد البكسل أو استخدم ضغط الصورة للوصول إلى حجم مستهدف.
  • في الاتجاه المعاكس: إن احتاج جهاز مدمج أو برنامج قديم إلى BMP، فاختر BMP صيغةً هدفًا في محوّل الصور. تكتب أدواتنا ملف BMP قياسيًا غير مضغوط بعمق 24 بت؛ وتُدمج المساحات الشفافة مع لون الخلفية الذي تختاره.

تعمل صفحات تحويل BMP لدينا في متصفحك: لا يُرفع الملف ولا يغادر جهازك أبدًا.

الأسئلة الشائعة

هل BMP وDIB الشيء نفسه؟

عمليًا نعم. DIB هي بنية الصورة النقطية المستقلة عن الجهاز التي يستخدمها Windows في الذاكرة وفي الحافظة؛ وملف BMP هو هذه البنية مسبوقة بترويسة ملف بحجم 14 بايت.

هل BMP بلا فقد؟

نعم. ملفات BMP غير المضغوطة والمضغوطة بـ RLE تحفظ قيم البكسلات كما هي تمامًا. والاستثناء الوحيد هو ملف BMP النادر الذي يحوي بيانات JPEG مضمّنة.

هل يؤدي تحويل BMP إلى PNG إلى فقدان الجودة؟

لا. فـ PNG بلا فقد أيضًا؛ تبقى الصورة مطابقة ويصغر حجمها فقط لأنها مضغوطة.

هل يمكنني استخدام BMP على موقع ويب؟

تعرض المتصفحات BMP، لكن ملفاتها كبيرة بلا داعٍ وتُبطئ الصفحات. استخدم JPG أو PNG أو WebP أو AVIF للويب.

هل تدعم BMP الشفافية؟

يمكن لملف BMP بعمق 32 بت نظريًا أن يحمل قناة ألفا، لكن البرامج لا تدعمها بشكل متّسق. وPNG هو الخيار الأكثر أمانًا كلما احتجت إلى الشفافية.

المصادر

محولات ذات صلة

كل المقالات