فایل BMP چیست؟
فایل هایی با پسوند .BMP نشان دهنده فایل های تصویر بیت مپ هستند که برای ذخیره تصاویر دیجیتال بیت مپ استفاده می شوند. این تصاویر مستقل از آداپتور گرافیکی هستند و به آنها فرمت فایل بیت مپ مستقل دستگاه (DIB) نیز می گویند. این استقلال به هدف باز کردن فایل در چندین پلتفرم مانند مایکروسافت ویندوز و مک عمل می کند. فرمت فایل BMP می تواند داده ها را به عنوان تصاویر دیجیتالی دو بعدی در هر دو فرمت تک رنگ و همچنین رنگی با عمق رنگ های مختلف ذخیره کند.
مشخصات فرمت فایل BMP
Bitmaps مستقل از دستگاه به عنوان کمکی برای تبادل بیت مپ بین دستگاه ها و برنامه ها عمل می کند. با توجه به تکامل مداوم این فرمت فایل، اطلاعات موجود در هدرها می تواند مطابق با نسخه Bitmap متفاوت باشد. یک فایل بیت مپ منفرد از ساختارهای ثابت و با اندازه متغیر در یک دنباله خاص تشکیل شده است.
ساختارها در یک فایل Bitmap به ترتیب زیر مرتب شده اند:
ساختار | اختیاری | اندازه | هدف |
---|---|---|---|
سربرگ فایل | خیر | 14 | برای ذخیره اطلاعات کلی در مورد فایل تصویر بیت مپ |
DIB Header | No | Fixed-Size | برای ذخیره اطلاعات دقیق در مورد تصویر بیت مپ و تعریف فرمت پیکسلی |
Extra Bit Masks | بله | 12 یا 16 بایت | برای تعریف فرمت پیکسل |
پالت رنگ | نیمه اختیاری | اندازه متغیر | برای تعریف رنگ های استفاده شده توسط داده های تصویر بیت مپ |
Gap1 | بله | اندازه متغیر | تراز ساختار |
Pixel Array | No | Variable-size | قالب پیکسل توسط هدر DIB یا ماسک های بیت اضافی تعریف می شود. |
Gap2 | بله | اندازه متغیر | تراز ساختار |
نمایه رنگ ICC | بله | اندازه متغیر | برای تعریف نمایه رنگ برای مدیریت رنگ |
هنگامی که یک تصویر بیت مپ در حافظه بارگذاری می شود، به یک ساختار DIB تبدیل می شود که توسط ویندوز از طریق GDI API آن استفاده می شود. هدر File بخشی از این ساختار داده نیست. رنگ همچنین میتواند شامل ورودیهای 16 بیتی باشد که بهجای تعاریف صریح رنگ RGB، نمایههایی را برای پالت ارجاعشده فعلی تشکیل میدهند. بیایید به برخی از این موارد با جزئیات نگاه کنیم، به خصوص هدرها.
هدر فایل بیت مپ
سربرگ فایل بیت مپ مشابه سایر هدرهای فایل است که برای شناسایی فایل استفاده می شود. از آنجایی که فرمت فایل BMP انواع مختلفی دارد، 2 بایت اول فرمت فایل BMP کاراکتر B و سپس کاراکتر M در رمزگذاری ASCII است. همه مقادیر صحیح در قالب کمی اندین ذخیره می شوند.
اوفست هگز | اوفست dec | اندازه | هدف |
---|---|---|---|
00 | 0 | 2 bytes | The header field used to identify the BMP and DIB file is 0x42 0x4D in hexadecimal, same as BM in ASCII. It can following possible values.* BM – Windows 3.1x, 95, NT, … etc. * BA – آرایه بیت مپ ساختار OS/2 * CI – نماد رنگ ساختار OS/2 * CP – نشانگر رنگ OS/2 const * IC – نماد ساختار OS/2 * PT – نشانگر OS/2 |
02 | 2 | 4 بایت | اندازه فایل BMP بر حسب بایت |
06 | 6 | 2 بایت | رزرو شده; مقدار واقعی به برنامه ای که تصویر را ایجاد می کند بستگی دارد |
08 | 8 | 2 بایت | رزرو شده; مقدار واقعی به برنامه ای که تصویر را ایجاد می کند بستگی دارد |
0A | 10 | 4 بایت | تغییر، یعنی آدرس شروع، بایتی که داده های تصویر بیت مپ (آرایه پیکسل) را می توان یافت. |
هدر DIB (هدر اطلاعات بیت مپ)
اطلاعات دقیق در مورد تصویر توسط این هدر نشان داده می شود. بر اساس این اطلاعات، برنامه ای مشخص می شود که برای نمایش تصویر روی صفحه استفاده می شود. همه این هدرها حاوی یک فیلد DWORD (32 بیتی) هستند که اندازه آنها را مشخص می کند، به طوری که یک برنامه به راحتی می تواند هدر مورد استفاده در تصویر را تعیین کند. این اساساً به دلیل این واقعیت است که فرمت DIB تحت چندین پسوند قرار گرفت. زیر سربرگ DIB با فیلدهای فهرست شده است.
پالت رنگ
پالت رنگ BMP آرایه ای از ساختارها است که مقادیر شدت RGB هر رنگ را در پالت رنگ یک دستگاه نمایشگر مشخص می کند. هر پیکسل در داده های بیت مپ یک مقدار واحد را که به عنوان شاخص در پالت رنگ استفاده می شود، ذخیره می کند. اطلاعات رنگ ذخیره شده در عنصر در آن شاخص، رنگ آن پیکسل را مشخص می کند. در دسترس بودن رنگ در یک فایل بیت مپ به شرح زیر متفاوت است:
یک، 4 و 8 بیتی - انتظار می رود همیشه دارای یک پالت رنگ باشد
شانزده، 24 و 32 بیت - هرگز شامل پالت های رنگی نمی شوند
فایل های 16 و 32 بیتی BMP - حاوی مقادیر ماسک فیلدهای بیتی به جای پالت رنگ هستند.
ذخیره سازی پیکسل
پیکسلهای بیت مپ بهعنوان بیتهای بستهبندی شده در ردیفهایی ذخیره میشوند که در آن اندازه هر ردیف به مضربی از 4 بایت (یک DWORD 32 بیتی) با padding گرد میشود. مقدار کل بایت های مورد نیاز برای ذخیره پیکسل های یک تصویر را نمی توان به طور مستقیم با شمارش بیت ها محاسبه کرد. از آنجایی که padding وجود دارد، اثر گرد کردن اندازه هر ردیف به مضربی از 4 بایت مورد نیاز است. بایتهای padding (نه لزوماً 0) باید به انتهای ردیفها اضافه شوند تا طول ردیفها به مضرب چهار بایت برسد. هنگامی که آرایه پیکسل در حافظه بارگذاری می شود، هر ردیف باید از یک آدرس حافظه شروع شود که مضربی از 4 است.
تصویر در واقع با نمایش 32 بیتی DWORD از آرایه پیکسلی توصیف می شود. معمولا پیکسل ها از پایین به بالا ذخیره می شوند، از گوشه پایین سمت چپ شروع می شوند، از چپ به راست می روند و سپس ردیف به ردیف از پایین به بالای تصویر. فرمت های پیکسل و مفاهیم آنها به شرح زیر است:
قالب 1 بیت در هر پیکسل (1bpp) از 2 رنگ متمایز (مثلا: سیاه و سفید) پشتیبانی می کند.
فرمت 2 بیت در هر پیکسل (2bpp) از 4 رنگ متمایز پشتیبانی می کند و 4 پیکسل در هر بایت را ذخیره می کند که سمت چپ ترین پیکسل در دو بیت مهم است. هر مقدار پیکسل یک شاخص 2 بیتی در جدولی با حداکثر 4 رنگ است.
فرمت 4 بیت در هر پیکسل (4bpp) از 16 رنگ متمایز پشتیبانی می کند و 2 پیکسل در هر بایت را ذخیره می کند. هر مقدار پیکسل یک شاخص 4 بیتی در جدولی با حداکثر 16 رنگ است.
فرمت 8 بیت در هر پیکسل (8bpp) از 256 رنگ متمایز پشتیبانی می کند و 1 پیکسل در هر بایت را ذخیره می کند. هر بایت نمایه ای در جدولی با حداکثر 256 رنگ است.
فرمت 16 بیت در هر پیکسل (16bpp) از 65536 رنگ متمایز پشتیبانی می کند و 1 پیکسل در هر 2 بایت WORD را ذخیره می کند. هر WORD می تواند نمونه های آلفا، قرمز، سبز و آبی پیکسل را تعریف کند.
فرمت پیکسل 24 بیتی (24bpp) از 16777216 رنگ متمایز پشتیبانی می کند و مقدار 1 پیکسل در هر 3 بایت را ذخیره می کند. هر مقدار پیکسل، نمونه های قرمز، سبز و آبی پیکسل را مشخص می کند (8.8.8.0.0 در نماد RGBAX). به طور خاص، به ترتیب: آبی، سبز و قرمز (8 بیت در هر نمونه).
فرمت 32 بیت در هر پیکسل (32bpp) از 4294967296 رنگ متمایز پشتیبانی می کند و 1 پیکسل در هر 4 بایت DWORD را ذخیره می کند. هر DWORD می تواند نمونه های آلفا، قرمز، سبز و آبی پیکسل را تعریف کند.