บิตแมป Windows (.bmp)

Microsoft มาตรฐาน

Bitmap Image File (BMP) เป็นรูปแบบกราฟิกราสเตอร์หลักของ Microsoft ที่ไม่ขึ้นกับอุปกรณ์ ซึ่งจัดเก็บสแกนไลน์ที่ไม่มีการบีบอัดหรือบีบอัดแบบ RLE พร้อมความเข้ากันได้กับเฟรมบัฟเฟอร์ฮาร์ดแวร์โดยตรง

แปลง BMP เป็น PNG

ตัวแปลงจาก BMP เป็น PNG ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ

ตรวจสอบไฟล์และข้อมูลเมตา

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ BMP โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:

เลือกหรือวางไฟล์ที่นี่

เป็นส่วนตัว - ไฟล์จะไม่ออกจากอุปกรณ์ของคุณ

หรือวาง Ctrl+V
รับประกันความเป็นส่วนตัวโดยไม่มีการส่งข้อมูลผ่านเครือข่าย: อัปโหลด 0 ไบต์ไปยังเซิร์ฟเวอร์ภายนอก การประมวลผลทั้งหมดเกิดขึ้นภายในแซนด์บ็อกซ์ของเบราว์เซอร์ของคุณ

ลายเซ็นส่วนหัวระดับไบต์

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ BMP โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:

ลายเซ็น HEX (OFFSET 0):

42 4D

การแสดงผลรูปแบบ ASCII: BM

มาตรฐาน: Microsoft Windows Device-Independent Bitmap (DIB) Architecture

ข้อมูลจำเพาะทางเทคนิค

สถาปัตยกรรมคอนเทนเนอร์BITMAPFILEHEADER ตามด้วย BITMAPINFOHEADER (DIB) และอาร์เรย์พิกเซลแรสเตอร์
การบีบอัดเส้นสแกนดิบแบบไม่บีบอัด หรือการเข้ารหัสความยาวช่วง BI_RLE8 / BI_RLE4 ที่เลือกใช้ได้
การจัดลำดับไบต์ลำดับไบต์ Little-Endian (ตามลำดับของ Intel x86)
พื้นที่สีRGB ที่ขึ้นกับอุปกรณ์, sRGB (ฝังอยู่ใน BITMAPV5HEADER)
ช่องสัญญาณและโครงสร้างภาพขาวดำ 1 บิต, พาเลต 4 บิต / 8 บิต, 16 บิต, RGB 24 บิต หรือ RGBA 32 บิต
ขนาดสูงสุด2,147,483,647 x 2,147,483,647 พิกเซล (จำนวนเต็มมีเครื่องหมาย 32 บิต)
ความโปร่งใสรองรับมาสก์อัลฟา BGRA 32 บิตในรูปแบบ BITMAPV3HEADER และ V5HEADER รุ่นใหม่
การสตรีมและแบบโปรเกรสซีฟไม่รองรับการสตรีม; จัดเก็บเส้นสแกนกลับหัว (จากล่างขึ้นบน) เว้นแต่ความสูงจะเป็นค่าลบ

ตารางเปรียบเทียบทางเทคนิค: BMP กับคู่แข่ง

คุณลักษณะทางเทคนิคBMP (ปัจจุบัน)PNGTIFFJPG
โหมดการบีบอัดไม่บีบอัด / RLE น้อยที่สุดการบีบอัด Deflate แบบไม่สูญเสียข้อมูล ขนาดไฟล์ที่ประหยัดได้ขึ้นอยู่กับเนื้อหาภาพไม่บีบอัด / LZW / ZipDCT แบบสูญเสียข้อมูล (ขนาดเล็กลงประมาณ 90%)
ความเร็วในการถอดรหัสคัดลอกหน่วยความจำทันทีต้องมีการถอดรหัส Deflateต้องมีการถอดรหัส LZW/ZIPต้องมีการคำนวณ IDCT
การเรียงลำดับสแกนไลน์จากล่างขึ้นบน (กลับด้าน)จากบนลงล่างจากบนลงล่าง / แบบสตริปบล็อก MCU จากบนลงล่าง
ความเหมาะสมกับเว็บแย่มาก (ขนาดเพย์โหลดใหญ่เกินไป)ยอดเยี่ยมสำหรับกราฟิกแย่ (งานพิมพ์บนเดสก์ท็อป)ยอดเยี่ยมสำหรับการถ่ายภาพ

รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex

ภาพแสดงผลเอียงทแยงมุมหรือบิดเบี้ยวเป็นมุม

สาเหตุหลัก: คำนวณการเติมข้อมูลท้ายแถวไม่ถูกต้อง (ไม่ได้เติมสแกนไลน์แต่ละแถวให้ครบขอบเขต 4 ไบต์)

การกู้คืน: เข้ารหัสใหม่โดยใช้ File2File.app Image Converter เพื่อบังคับให้สตรีดสแกนไลน์ 32 บิตถูกต้อง

การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์

ตัวถอดรหัส BMP มักประสบปัญหาการอ่านหน่วยความจำเกินขอบเขต (Buffer Over-read) เมื่อจัดสรรบัฟเฟอร์ตามขนาดส่วนหัว DIB ที่ไม่น่าเชื่อถือ

เวกเตอร์การโจมตีที่ทราบ

  • การเกิด Integer Overflow ในการคำนวณ width * height * bpp ซึ่งนำไปสู่การจัดสรร Heap ขนาดเล็กและการเขียนข้อมูลนอกขอบเขต
  • ลำดับ escape ของการเข้ารหัสความยาวรัน (Run-length escape sequences) ของ RLE8/RLE4 ที่เสียหาย ทำให้เกิดการเขียนหน่วยความจำนอกเหนือบัฟเฟอร์ที่จัดสรรไว้
  • การปฏิเสธการให้บริการ (Denial of Service) ผ่านการจัดสรรหน่วยความจำขนาดหลายกิกะไบต์ที่ถูกกระตุ้นโดยค่าขนาดในส่วนหัวที่ถูกสร้างขึ้นมาเพื่อโจมตี

แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: ตรวจสอบความถูกต้องของขอบเขตความกว้าง ความสูง และความลึกบิตของส่วนหัว DIB อย่างเข้มงวดก่อนจัดสรรหน่วยความจำปลายทาง

ประวัติความเป็นมาและเหตุการณ์สำคัญ

1998Windows 98 เปิดตัว BITMAPV5HEADER โดยเพิ่มการจัดการโปรไฟล์สี ICC และการแก้ไขแกมม่า
1990Windows 3.0 สร้างมาตรฐานให้กับข้อกำหนด BITMAPINFOHEADER DIB ทั่วทั้งระบบปฏิบัติการ
1987เปิดตัวพร้อมกับ Windows 2.0 และ OS/2 1.1 ในฐานะรูปแบบราสเตอร์สำหรับแสดงผลดั้งเดิม

ข้อได้เปรียบและจุดเด่นสำคัญ

  • ไม่มีการเสื่อมของคุณภาพจากการบีบอัด: การจัดเก็บพิกเซลที่ตรงกันทุกบิต 100% โดยไม่มีอาร์ติแฟกต์จากการบีบอัด
  • Windows มีตัวแปลงรหัส BMP ในตัว ส่วนการรองรับในระบบปฏิบัติการและแอปอื่น ๆ แตกต่างกันไป
  • ความซับซ้อนในการถอดรหัสที่ต่ำมาก ทำให้เหมาะสำหรับไมโครคอนโทรลเลอร์ฝังตัวและการศึกษาการเขียนโปรแกรมกราฟิก

ข้อจำกัดทางเทคนิคและข้อควรพิจารณา

  • ขนาดไฟล์ใหญ่โตเนื่องจากขาดการบีบอัดเอนโทรปีสมัยใหม่ เช่น DEFLATE หรือการเข้ารหัสแบบ Huffman
  • ไม่มีประสิทธิภาพสำหรับการส่งผ่านเว็บหรือการกระจายผ่านเครือข่ายมือถือ
  • การเรียงสแกนไลน์จากล่างขึ้นบนทำให้ต้องกลับลำดับแถวในไปป์ไลน์กราฟิกสมัยใหม่ที่เรียงจากบนลงล่าง

เกร็ดความรู้ทางเทคนิคที่น่าสนใจ

  • ตามค่าเริ่มต้น BMP จะจัดเก็บสแกนไลน์ของภาพกลับหัว (จากล่างขึ้นบน) เนื่องจากระบบพิกัดคาร์ทีเซียนที่ OS/2 ใช้
  • หากค่าความสูงในส่วนหัว BMP ถูกตั้งค่าเป็นตัวลบ ภาพจะถูกถอดรหัสในลักษณะตั้งตรง (จากบนลงล่าง)
  • สแกนไลน์ทุกเส้นในไฟล์ BMP จะต้องถูกเติมด้วยเลขศูนย์ให้เป็นผลคูณของ 4 ไบต์ (การจัดแนวขอบเขต 32 บิต)

คำถามทางเทคนิคที่พบบ่อย

เหตุใดไฟล์ BMP จึงมีขนาดใหญ่มาก

ไฟล์ BMP จัดเก็บค่าสีดิบที่ไม่มีการบีบอัดสำหรับทุกๆ พิกเซล ในขณะที่รูปแบบเช่น PNG จะบีบอัดข้อมูลนั้นโดยไม่สูญเสียคุณภาพใดๆ

BMP รองรับความโปร่งใสหรือไม่

ได้ ไฟล์ BMP แบบ 32-bit (ที่ใช้ BITMAPV3HEADER หรือใหม่กว่า) สามารถจัดเก็บช่องสัญญาณอัลฟา 8-bit ได้ แม้ว่าการรองรับจะแตกต่างกันไปในซอฟต์แวร์รุ่นเก่าๆ

ลดขนาดไฟล์ BMP ได้อย่างไร

การแปลงไฟล์ BMP เป็น PNG อาจลดขนาดไฟล์โดยคงค่าพิกเซลไว้ แต่ผลลัพธ์ขึ้นอยู่กับเนื้อหาภาพและการเข้ารหัส BMP