একটি BMP ফাইল কি?
এক্সটেনশন থাকা ফাইলগুলি .BMP বিটম্যাপ চিত্র ফাইলগুলিকে উপস্থাপন করে যা বিটম্যাপ ডিজিটাল চিত্রগুলি সংরক্ষণ করতে ব্যবহৃত হয়। এই ছবিগুলি গ্রাফিক্স অ্যাডাপ্টার থেকে স্বাধীন এবং ডিভাইস স্বাধীন বিটম্যাপ (DIB) ফাইল ফর্ম্যাটও বলা হয়। এই স্বাধীনতা একাধিক প্ল্যাটফর্ম যেমন মাইক্রোসফ্ট উইন্ডোজ এবং ম্যাকের মতো ফাইল খোলার উদ্দেশ্যে কাজ করে। BMP ফাইল ফরম্যাট বিভিন্ন রঙের গভীরতার সাথে একরঙা এবং রঙ বিন্যাসে দ্বি-মাত্রিক ডিজিটাল চিত্র হিসাবে ডেটা সংরক্ষণ করতে পারে।
BMP ফাইল ফরম্যাট স্পেসিফিকেশন
ডিভাইস স্বাধীন বিটম্যাপগুলি ডিভাইস এবং অ্যাপ্লিকেশনগুলির মধ্যে বিটম্যাপ আদান-প্রদানের জন্য একটি সহায়তা হিসাবে কাজ করে। এই ফাইল ফরম্যাটের ক্রমাগত বিবর্তনের কারণে, হেডারে থাকা তথ্য বিটম্যাপের সংস্করণ অনুসারে ভিন্ন হতে পারে। একটি একক বিটম্যাপ ফাইল একটি নির্দিষ্ট ক্রমানুসারে স্থির এবং পরিবর্তনশীল-আকারের কাঠামো নিয়ে গঠিত।
একটি বিটম্যাপ ফাইলের কাঠামো নিম্নলিখিত ক্রমে সাজানো হয়:
কাঠামো | ঐচ্ছিক | আকার | উদ্দেশ্য |
---|---|---|---|
ফাইল হেডার | নং | 14 | বিটম্যাপ ইমেজ ফাইল সম্পর্কে সাধারণ তথ্য সংরক্ষণ করতে |
DIB শিরোনাম | না | স্থির-আকার | |
অতিরিক্ত বিট মাস্ক | হ্যাঁ | 12 বা 16 বাইট | পিক্সেল বিন্যাস সংজ্ঞায়িত করতে |
রঙ প্যালেট | আধা-ঐচ্ছিক | ভেরিয়েবল-আকার | |
Gap1 | হ্যাঁ | ভেরিয়েবল-সাইজ | স্ট্রাকচার অ্যালাইনমেন্ট |
পিক্সেল অ্যারে | না | ভেরিয়েবল-আকার | |
Gap2 | হ্যাঁ | ভেরিয়েবল-সাইজ | স্ট্রাকচার অ্যালাইনমেন্ট |
ICC কালার প্রোফাইল | হ্যাঁ | ভেরিয়েবল-আকার |
যখন একটি বিটম্যাপ ইমেজ মেমরিতে লোড করা হয়, তখন এটি একটি DIB কাঠামোতে পরিণত হয়, যা উইন্ডোজ এর GDI API এর মাধ্যমে ব্যবহার করে। ফাইল হেডার এই ডেটা স্ট্রাকচারের অংশ নয়। রঙটিতে 16-বিট এন্ট্রিও থাকতে পারে যা স্পষ্ট RGB রঙের সংজ্ঞার পরিবর্তে বর্তমানভাবে উল্লেখ করা প্যালেটের সূচী গঠন করে। আসুন বিস্তারিতভাবে এর মধ্যে কয়েকটি দেখুন, বিশেষ করে হেডার।
বিটম্যাপ ফাইল হেডার
একটি বিটম্যাপ ফাইল হেডার ফাইল শনাক্ত করতে ব্যবহৃত অন্যান্য ফাইল হেডারের অনুরূপ। যেহেতু BMP ফাইল ফরম্যাটের বিভিন্ন রূপ আছে, BMP ফাইল ফরম্যাটের প্রথম 2 বাইট হল B অক্ষর এবং তারপর ASCII এনকোডিং-এ M অক্ষর। সমস্ত পূর্ণসংখ্যার মান লিটল-এন্ডিয়ান বিন্যাসে সংরক্ষণ করা হয়।
অফসেট হেক্স | অফসেট ডিসেম্বর | আকার | উদ্দেশ্য |
---|---|---|---|
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 struct বিটম্যাপ অ্যারে * CI – OS/2 struct কালার আইকন * CP – OS/2 কন্সট কালার পয়েন্টার * IC – OS/2 স্ট্রাকট আইকন * PT - OS/2 পয়েন্টার |
02 | 2 | 4 বাইট | বাইটে BMP ফাইলের আকার |
06 | 6 | 2 বাইট | সংরক্ষিত; প্রকৃত মান ছবিটি তৈরি করে এমন অ্যাপ্লিকেশনের উপর নির্ভর করে |
08 | 8 | 2 বাইট | সংরক্ষিত; প্রকৃত মান ছবিটি তৈরি করে এমন অ্যাপ্লিকেশনের উপর নির্ভর করে |
0A |
DIB হেডার (বিটম্যাপ তথ্য শিরোনাম)
ইমেজ সম্পর্কে বিস্তারিত তথ্য এই হেডার দ্বারা প্রতিনিধিত্ব করা হয়. এই তথ্যের উপর ভিত্তি করে, অ্যাপ্লিকেশন নির্ধারণ করা হবে যেটি স্ক্রিনে চিত্র প্রদর্শন করতে ব্যবহৃত হবে। এই ধরনের সমস্ত শিরোনাম একটি DWORD (32-বিট) ক্ষেত্র ধারণ করে, তাদের আকার নির্দিষ্ট করে, যাতে একটি অ্যাপ্লিকেশন সহজেই int he ছবিতে ব্যবহৃত হেডার নির্ধারণ করতে পারে। এটি মূলত এই কারণে যে ডিআইবি ফর্ম্যাটটি বেশ কয়েকটি এক্সটেনশনের মধ্য দিয়ে গেছে। তালিকাভুক্ত ক্ষেত্র সহ ডিআইবি হেডার নিচে দেওয়া হল।
রঙ্গের পাত
একটি BMP রঙ প্যালেট হল কাঠামোর একটি অ্যারে যা একটি ডিসপ্লে ডিভাইসের রঙ প্যালেটে প্রতিটি রঙের RGB তীব্রতার মান নির্দিষ্ট করে। বিটম্যাপ ডেটার প্রতিটি পিক্সেল রঙ প্যালেটে সূচক হিসাবে ব্যবহৃত একটি একক মান সঞ্চয় করে। সেই সূচকে উপাদানে সংরক্ষিত রঙের তথ্য সেই পিক্সেলের রঙ নির্দিষ্ট করে। একটি বিটম্যাপ ফাইলে রঙের প্রাপ্যতা নিম্নরূপ পরিবর্তিত হয়:
এক, 4 এবং 8-বিট - সর্বদা একটি রঙ প্যালেট থাকবে বলে আশা করা হচ্ছে
ষোল, 24 এবং 32-বিট - কখনই রঙের প্যালেট থাকবে না
ষোল এবং 32-বিট BMP ফাইল - রঙ প্যালেটের জায়গায় বিটফিল্ড মাস্ক মান ধারণ করে
পিক্সেল স্টোরেজ
বিটম্যাপ পিক্সেলগুলি সারিগুলিতে প্যাক করা বিট হিসাবে সংরক্ষণ করা হয় যেখানে প্রতিটি সারির আকার প্যাডিং দ্বারা 4 বাইটের একাধিক (একটি 32-বিট DWORD) পর্যন্ত রাউন্ড করা হয়। একটি ছবির পিক্সেল সংরক্ষণ করার জন্য মোট বাইটের পরিমাণ সরাসরি বিট গণনা করে গণনা করা যায় না। যেহেতু প্যাডিং জড়িত, তাই প্রতিটি সারির আকারকে 4 বাইটের একাধিক পর্যন্ত রাউন্ড আপ করার প্রভাব প্রয়োজন। সারির দৈর্ঘ্যকে চার বাইটের মাল্টিপল করার জন্য প্যাডিং বাইট (0 অগত্যা নয়) সারির শেষে যুক্ত করতে হবে। যখন পিক্সেল অ্যারে মেমরিতে লোড করা হয়, তখন প্রতিটি সারি একটি মেমরি ঠিকানায় শুরু হতে হবে যা 4 এর একাধিক।
চিত্রটি আসলে পিক্সেল অ্যারের 32-বিট DWORDs উপস্থাপনা দ্বারা বর্ণনা করা হয়েছে। সাধারণত পিক্সেলগুলি নিচে-আপ সংরক্ষণ করা হয়, নীচের বাম কোণ থেকে শুরু করে, বাম থেকে ডানে যায় এবং তারপরে চিত্রের নীচে থেকে উপরের দিকে সারি করে। পিক্সেল বিন্যাস এবং তাদের প্রভাব নীচে তালিকাভুক্ত করা হয়েছে:
1-বিট প্রতি পিক্সেল (1bpp) ফর্ম্যাট 2টি স্বতন্ত্র রং সমর্থন করে, (উদাহরণস্বরূপ: কালো এবং সাদা)।
2-বিট প্রতি পিক্সেল (2bpp) ফর্ম্যাটটি 4টি স্বতন্ত্র রঙকে সমর্থন করে এবং প্রতি 1 বাইটে 4 পিক্সেল সঞ্চয় করে, বাম-সবচেয়ে পিক্সেল দুটি সবচেয়ে উল্লেখযোগ্য বিটে রয়েছে। প্রতিটি পিক্সেল মান হল একটি 2-বিট সূচী যা 4টি পর্যন্ত রঙের একটি টেবিলে।
4-বিট প্রতি পিক্সেল (4bpp) বিন্যাসটি 16টি স্বতন্ত্র রঙকে সমর্থন করে এবং প্রতি 1 বাইটে 2 পিক্সেল সঞ্চয় করে, বাম-সবচেয়ে বেশি পিক্সেলটি আরও উল্লেখযোগ্য নিবলে থাকে। প্রতিটি পিক্সেল মান হল একটি 4-বিট সূচী যা 16 টি রঙ পর্যন্ত একটি টেবিলে।
8-বিট প্রতি পিক্সেল (8bpp) ফর্ম্যাটটি 256টি স্বতন্ত্র রং সমর্থন করে এবং প্রতি 1 বাইট প্রতি 1 পিক্সেল সঞ্চয় করে। প্রতিটি বাইট 256 রঙ পর্যন্ত একটি টেবিলের একটি সূচক।
16-বিট প্রতি পিক্সেল (16bpp) ফর্ম্যাটটি 65536টি স্বতন্ত্র রং সমর্থন করে এবং প্রতি 2-বাইট WORD প্রতি 1 পিক্সেল সঞ্চয় করে। প্রতিটি শব্দ পিক্সেলের আলফা, লাল, সবুজ এবং নীল নমুনা সংজ্ঞায়িত করতে পারে।
24-বিট পিক্সেল (24bpp) বিন্যাস 16,777,216 স্বতন্ত্র রং সমর্থন করে এবং প্রতি 3 বাইটে 1 পিক্সেল মান সঞ্চয় করে। প্রতিটি পিক্সেল মান পিক্সেলের লাল, সবুজ এবং নীল নমুনাগুলিকে সংজ্ঞায়িত করে (RGBAX স্বরলিপিতে 8.8.8.0.0)। বিশেষভাবে, ক্রমানুসারে: নীল, সবুজ এবং লাল (প্রতিটি নমুনা প্রতি 8 বিট)।
32-বিট প্রতি পিক্সেল (32bpp) ফরম্যাট 4,294,967,296 স্বতন্ত্র রং সমর্থন করে এবং প্রতি 4-বাইট DWORD প্রতি 1 পিক্সেল সঞ্চয় করে। প্রতিটি DWORD পিক্সেলের আলফা, লাল, সবুজ এবং নীল নমুনা নির্ধারণ করতে পারে।