บิตแมป Windows (.bmp)
Microsoft มาตรฐานBitmap Image File (BMP) เป็นรูปแบบกราฟิกราสเตอร์ที่ไม่ขึ้นกับอุปกรณ์หลักของ Microsoft ซึ่งจัดเก็บสแกนไลน์ที่ไม่มีการบีบอัดหรือบีบอัดแบบ RLE พร้อมความเข้ากันได้กับเฟรมบัฟเฟอร์ฮาร์ดแวร์โดยตรง
แปลง BMP เป็น PNG
ตัวแปลงจาก BMP เป็น PNG ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ
ตรวจสอบและดู Metadata
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ BMP โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็นส่วนหัวในระดับไบต์ (Magic Bytes)
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ BMP โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็น HEX (OFFSET 0):
42 4Dการแสดงผลรูปแบบ ASCII: BM
มาตรฐาน: Microsoft Windows Device-Independent Bitmap (DIB) Architecture
ข้อมูลจำเพาะทางเทคนิค
| สถาปัตยกรรมคอนเทนเนอร์ | BITMAPFILEHEADER followed by BITMAPINFOHEADER (DIB) and raster pixel array |
| การบีบอัด | Uncompressed raw scanlines, or optional BI_RLE8 / BI_RLE4 run-length encoding |
| การจัดลำดับไบต์ (Byte Endianness) | Little-Endian (Intel x86 byte order) |
| พื้นที่สี | Device Dependent RGB, sRGB (BITMAPV5HEADER embedded) |
| ช่องสัญญาณและโครงสร้าง | 1-bit monochrome, 4-bit / 8-bit paletted, 16-bit, 24-bit RGB, or 32-bit RGBA |
| ขนาดสูงสุด | 2,147,483,647 x 2,147,483,647 pixels (signed 32-bit integer) |
| ความโปร่งใส | 32-bit BGRA alpha mask supported in modern BITMAPV3HEADER and V5HEADER formats |
| การสตรีมและแบบโปรเกรสซีฟ | Non-streamable; scanlines stored upside-down (bottom-up) unless height is negative |
ตารางเปรียบเทียบทางเทคนิค: BMP กับคู่แข่ง
| คุณลักษณะทางเทคนิค | BMP (ปัจจุบัน) | PNG | TIFF | JPG |
|---|---|---|---|---|
| โหมดการบีบอัด | ไม่บีบอัด / RLE น้อยที่สุด | Deflate แบบไม่สูญเสียข้อมูล (~เล็กลง 70%) | ไม่บีบอัด / LZW / Zip | DCT แบบสูญเสียข้อมูล (~เล็กลง 90%) |
| ความเร็วในการถอดรหัส | คัดลอกหน่วยความจำทันที | ต้องมีการถอดรหัส Deflate | ต้องมีการถอดรหัส LZW/ZIP | ต้องมีการคำนวณ IDCT |
| การเรียงลำดับสแกนไลน์ | จากล่างขึ้นบน (กลับด้าน) | จากบนลงล่าง | จากบนลงล่าง / แบบสตริป | บล็อก MCU จากบนลงล่าง |
| ความเหมาะสมกับเว็บ | แย่มาก (ขนาดเพย์โหลดใหญ่เกินไป) | ยอดเยี่ยมสำหรับกราฟิก | แย่ (งานพิมพ์บนเดสก์ท็อป) | ยอดเยี่ยมสำหรับการถ่ายภาพ |
รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex
ภาพแสดงผลเอียงทแยงมุมหรือบิดเบี้ยวเป็นมุม
สาเหตุหลัก: การคำนวณการเติมข้อมูลสแกนไลน์ไม่ถูกต้อง (ล้มเหลวในการเติมสแกนไลน์แต่ละเส้นให้ครบขอบเขต 4 ไบต์)
การกู้คืน: เข้ารหัสใหม่โดยใช้ File2File Image Converter เพื่อบังคับให้สตรีดสแกนไลน์ 32 บิตถูกต้อง
การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์
ตัวถอดรหัส BMP มักประสบปัญหาการอ่านหน่วยความจำเกินขอบเขต (Buffer Over-read) เมื่อจัดสรรบัฟเฟอร์ตามขนาดส่วนหัว DIB ที่ไม่น่าเชื่อถือ
เวกเตอร์การโจมตีที่ทราบ
- การเกิด Integer Overflow ในการคำนวณ width * height * bpp ซึ่งนำไปสู่การจัดสรร Heap ขนาดเล็กและการเขียนข้อมูลนอกขอบเขต
- ลำดับการหลบหนีความยาวรัน (Run-length escape sequences) ของ RLE8/RLE4 ที่เสียหาย ทำให้เกิดการเขียนหน่วยความจำนอกเหนือบัฟเฟอร์ที่จัดสรรไว้
- การปฏิเสธการให้บริการ (Denial of Service) ผ่านการจัดสรรหน่วยความจำขนาดหลายกิกะไบต์ที่ถูกกระตุ้นโดยขนาดส่วนหัวที่ถูกสร้างขึ้นมาโดยเฉพาะ
แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน:
ประวัติความเป็นมาและเหตุการณ์สำคัญ
ข้อได้เปรียบและจุดเด่นสำคัญ
- ไม่มีการเสื่อมของคุณภาพจากการบีบอัด: การจัดเก็บพิกเซลที่ตรงกันทุกบิต 100% โดยไม่มีอาร์ติแฟกต์จากการบีบอัด
- รองรับระบบปฏิบัติการดั้งเดิมสากลใน Windows, Linux และ macOS ทุกเวอร์ชัน
- ความซับซ้อนในการถอดรหัสที่ต่ำมาก ทำให้เหมาะสำหรับไมโครคอนโทรลเลอร์ฝังตัวและการศึกษาการเขียนโปรแกรมกราฟิก
ข้อจำกัดทางเทคนิคและข้อควรพิจารณา
- ขนาดไฟล์ใหญ่โตเนื่องจากขาดการบีบอัดเอนโทรปีสมัยใหม่ เช่น DEFLATE หรือการเข้ารหัสแบบ Huffman
- ไม่มีประสิทธิภาพสำหรับการส่งผ่านเว็บหรือการกระจายผ่านเครือข่ายมือถือ
- การเรียงลำดับสแกนไลน์จากล่างขึ้นบนต้องมีการสลับแถวแนวตั้งในไปป์ไลน์กราฟิกแบบบนลงล่างสมัยใหม่
เกร็ดความรู้ทางเทคนิคที่น่าสนใจ
- ตามค่าเริ่มต้น BMP จะจัดเก็บสแกนไลน์ของภาพกลับหัว (จากล่างขึ้นบน) เนื่องจากระบบพิกัดคาร์ทีเซียนทางคณิตศาสตร์ที่ใช้ใน OS/2
- หากค่าความสูงในส่วนหัว BMP ถูกตั้งค่าเป็นตัวลบ ภาพจะถูกถอดรหัสในลักษณะตั้งตรง (จากบนลงล่าง)
- สแกนไลน์ทุกเส้นในไฟล์ BMP จะต้องถูกเติมด้วยเลขศูนย์ให้เป็นผลคูณของ 4 ไบต์ (การจัดแนวขอบเขต 32 บิต)
คำถามทางเทคนิคที่พบบ่อย
เหตุใดไฟล์ BMP จึงมีขนาดใหญ่มาก
ไฟล์ BMP จัดเก็บค่าสีดิบที่ไม่มีการบีบอัดสำหรับทุกๆ พิกเซล ในขณะที่รูปแบบเช่น PNG จะบีบอัดข้อมูลนั้นโดยไม่สูญเสียคุณภาพใดๆ
BMP รองรับความโปร่งใสหรือไม่
ได้ ไฟล์ BMP แบบ 32-bit (ที่ใช้ BITMAPV3HEADER หรือใหม่กว่า) สามารถจัดเก็บช่องสัญญาณอัลฟา 8-bit ได้ แม้ว่าการรองรับจะแตกต่างกันไปในซอฟต์แวร์รุ่นเก่าๆ
ฉันจะลดขนาดไฟล์ BMP ได้อย่างไร
การแปลงไฟล์ BMP เป็น PNG ด้วย File2File.app มักจะช่วยลดขนาดไฟล์ลงได้ 60% ถึง 85% โดยที่คุณภาพการมองเห็นยังคงไม่สูญเสียไปเลย
คู่การแปลงไฟล์ BMP ที่เกี่ยวข้อง
การแปลงไฟล์ Windows Bitmap ที่ไม่มีการบีบอัดเป็น PNG จะให้การบีบอัดแบบไม่สูญเสียข้อมูล ซึ่งช่วยลดขนาดไฟล์โดยไม่ลดคุณภาพของภาพ
การแปลงไฟล์ Portable Network Graphics เป็น Windows Bitmap จะเปลี่ยนข้อมูลราสเตอร์ที่บีบอัดให้เป็นตารางพิกเซลที่ไม่มีการบีบอัด สำหรับระบบปฏิบัติการและฮาร์ดแวร์รุ่นเก่า