บิตแมป Windows (.bmp)

Microsoft มาตรฐาน

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

แปลง BMP เป็น PNG

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

ตรวจสอบและดู Metadata

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

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

การแปลงไฟล์แบบส่วนตัว 100% ในเบราว์เซอร์ - ไฟล์จะไม่ rời ออกจากอุปกรณ์ของคุณ

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

ลายเซ็นส่วนหัวในระดับไบต์ (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 (ปัจจุบัน)PNGTIFFJPG
โหมดการบีบอัดไม่บีบอัด / RLE น้อยที่สุดDeflate แบบไม่สูญเสียข้อมูล (~เล็กลง 70%)ไม่บีบอัด / LZW / ZipDCT แบบสูญเสียข้อมูล (~เล็กลง 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) ผ่านการจัดสรรหน่วยความจำขนาดหลายกิกะไบต์ที่ถูกกระตุ้นโดยขนาดส่วนหัวที่ถูกสร้างขึ้นมาโดยเฉพาะ

แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน:

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

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

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

  • ไม่มีการเสื่อมของคุณภาพจากการบีบอัด: การจัดเก็บพิกเซลที่ตรงกันทุกบิต 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% โดยที่คุณภาพการมองเห็นยังคงไม่สูญเสียไปเลย