تنسيق BMP هو تنسيق الصور النقطية (bitmap) الذي دمجته Microsoft في Windows، وكان جزءًا من النظام منذ أقدم نسخه الرسومية، مع نسخة قريبة منه قادمة من نظام OS/2 من IBM. الفكرة لم تكن ضغطًا ذكيًا أبدًا. ملف BMP يشبه بشكل كبير تفريغًا مباشرًا للبكسلات التي يرسلها البرنامج إلى الشاشة، ملفوفة في ترويسة قصيرة تشرح كيفية قراءتها. ما زلت تصادف ملفات BMP كأيقونات وموارد داخل برمجيات Windows، وكخرج من برامج الالتقاط البسيطة، وكصيغة وسيطة عندما ينقل أحد البرامج صورة إلى برنامج آخر.
كيفية تخزين ملف BMP لصورته
يكون غير مضغوط تقريبًا في كل الحالات. يبدأ الملف بترويسة صغيرة تحمل الحرفين BM، وحجم الملف، والموضع الذي تبدأ عنده البكسلات، ثم ترويسة ثانية تصف الصورة نفسها: العرض، الارتفاع، عمق البت وكيفية ترتيب الألوان. بعد ذلك تأتي لوحة ألوان اختيارية، ثم مصفوفة البكسلات، قيمة واحدة لكل بكسل دون حذف أي شيء.
هناك سمتان مفاجئتان. تُخزَّن الصفوف عادةً من الأسفل إلى الأعلى، لذا فإن أول بكسلات في الملف تمثل الزاوية السفلية اليسرى من الصورة، ويُستكمَل كل صف بحشو ليصبح مضاعفًا لأربع بايتات. تتراوح أعماق البت من 1 بت، أي لونين، مرورًا بلوحات ألوان 4 و8 بت، وحتى 16 و24 و32 بت من الألوان الكاملة. يوجد ضغط بطول التشغيل (run-length) لوضعَي 4 و8 بت، لكنه نادر الاستخدام، ويمكن لوضع 32 بت أن يتضمن قناة شفافية ألفا، رغم أن البرمجيات الأقدم كثيرًا ما تتجاهلها.
لأن شيئًا لا يُضغَط، يكون الحجم متوقعًا وكبيرًا: ملف BMP بعمق 24 بت يستهلك ثلاث بايتات لكل بكسل مهما احتوت الصورة، لذا تصبح الصورة الفوتوغرافية التي تناسب JPG صغيرًا بعدة ميغابايتات. في المقابل، يكون من السهل جدًا قراءة هذا التنسيق وكتابته، وهو بلا فقدان: لا يتم التخلص من أي تفصيل.
ما هي البيانات الوصفية التي يحملها ملف BMP
قليل جدًا، وهذا أهم ما يجب أن تعرفه عن هذا التنسيق. البيانات الوصفية هي المعلومات التي يحتفظ بها الملف عن نفسه، وقد صُمِّم BMP قبل أن تصبح هذه الفكرة مهمة. لا يوجد EXIF ولا IPTC ولا XMP في BMP، لذلك لا مكان لطراز الكاميرا أو اسم المصوّر أو تعليق توضيحي أو إحداثيات GPS. ليس له حقل مؤلف، ولا عنوان، ولا أي حقل تاريخ على الإطلاق: التاريخ الوحيد لملف BMP هو الذي يحتفظ به نظام الملفات، والموجود خارج الملف ويتغيّر عندما يُنسخ الملف.
ما يمكن للتقرير عرضه يأتي من الترويسات، وهي تصف الصورة نفسها لا تاريخها:
- العرض والارتفاع وعمق البت، وما إذا كانت الصفوف مخزنة من الأسفل إلى الأعلى أو من الأعلى إلى الأسفل.
- طريقة الضغط، وهي غالبًا عدم وجود ضغط إطلاقًا.
- الدقة الأفقية والعمودية، مخزنة بوحدة بكسلات لكل متر بدلًا من النقاط لكل بوصة الأكثر شيوعًا.
- عدد الألوان التي تحتويها لوحة الألوان، وعدد الألوان التي تعتبرها الصورة مهمة.
هناك ملاحظة واحدة حقيقية تتعلق بالخصوصية. يمكن للترويسات الموسّعة إرفاق ملف تعريف ألوان ICC، وتسمح بأن يكون مرتبطًا بدلًا من تضمينه، مخزنًا كمسار ملف على الجهاز الذي حفظ الصورة. يمكن لمثل هذا المسار أن يكشف عن اسم مستخدم أو بنية مجلدات شخص ما. هذا أمر غير شائع، لكن إذا أظهر التقرير ملف تعريف مرتبطًا، فهذه معلومة حقيقية عن حاسوب شخص ما داخل ملف صامت خلاف ذلك.
متى تستخدم BMP
يكون BMP منطقيًا عندما تتفوّق البساطة على الحجم: تمرير صورة إلى برنامج أو جهاز بمفسّر بسيط، أو العمل داخل برمجيات Windows التي تتوقعه، أو تمرير صورة بين خطوتين في عملية يكون ضغطها مرة أخرى فيها جهدًا ضائعًا. وبما أنه بلا فقدان، فمن الآمن أيضًا حفظه مرارًا دون تدهور الصورة.
لأي شيء تخزّنه أو ترسله أو تنشره، يكون PNG خيارًا أفضل. فهو بلا فقدان أيضًا، لذا تعود البكسلات مطابقة، لكن التصفية والضغط فيه يقللان حجم الملف عادة إلى جزء بسيط من حجمه، ويمكنه حمل عنوان ومؤلف وملف تعريف ألوان. للصور الفوتوغرافية، ستكون ملفات JPG أو WebP أصغر مرة أخرى. اختر BMP عن قصد، لسبب تقني، لا كخيار افتراضي.