Ảnh bitmap Windows (.bmp)

Microsoft Tiêu chuẩn

Bitmap Image File (BMP) là định dạng đồ họa raster độc lập với thiết bị nền tảng của Microsoft, lưu trữ các dòng quét không nén hoặc nén RLE và tương thích trực tiếp với bộ đệm khung hình phần cứng.

Chuyển đổi BMP sang PNG

Trình chuyển đổi từ BMP sang PNG miễn phí trên trình duyệt. Chuyển đổi tệp ngay lập tức trên thiết bị của bạn.

Kiểm tra & Siêu dữ liệu

Các hệ điều hành và trình phân tích tệp nhận dạng tệp BMP bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:

Chọn hoặc thả tệp vào đây

Riêng tư - tệp không bao giờ rời khỏi thiết bị của bạn

Hoặc dán Ctrl+V
Cam kết bảo vệ quyền riêng tư, không truyền dữ liệu qua mạng: 0 byte được tải lên máy chủ bên ngoài. Toàn bộ quá trình xử lý diễn ra cục bộ trong hộp cát trình duyệt của bạn.

Chữ ký ở đầu tệp (mẫu byte nhận diện)

Các hệ điều hành và trình phân tích tệp nhận dạng tệp BMP bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:

CHỮ KÝ HEX (OFFSET 0):

42 4D

BIỂU DIỄN ASCII: BM

Tiêu chuẩn hóa: Microsoft Windows Device-Independent Bitmap (DIB) Architecture

Thông số kỹ thuật

Kiến trúc ContainerBITMAPFILEHEADER, tiếp theo là BITMAPINFOHEADER (DIB) và mảng điểm ảnh raster
NénDòng quét thô không nén hoặc tùy chọn mã hóa độ dài chuỗi BI_RLE8 / BI_RLE4
Thứ tự byteLittle-endian (thứ tự byte Intel x86)
Không gian màuRGB phụ thuộc thiết bị, sRGB (được nhúng trong BITMAPV5HEADER)
Kênh & Cấu trúcĐơn sắc 1 bit, bảng màu 4/8 bit, RGB 16/24 bit hoặc RGBA 32 bit
Kích thước tối đa2.147.483.647 x 2.147.483.647 điểm ảnh (số nguyên có dấu 32 bit)
Độ trong suốtMặt nạ alpha BGRA 32 bit được hỗ trợ trong các định dạng BITMAPV3HEADER và V5HEADER hiện đại
Truyền phát & Tăng dầnKhông thể truyền phát; dòng quét được lưu ngược từ dưới lên, trừ khi chiều cao là số âm

Ma trận so sánh kỹ thuật: BMP so với các đối thủ

Thuộc tính kỹ thuậtBMP (Hiện tại)PNGTIFFJPG
Chế độ nénKhông nén / RLE tối thiểuDeflate không mất dữ liệu (nhỏ hơn ~70%)Không nén / LZW / ZipDCT có mất dữ liệu (nhỏ hơn ~90%)
Tốc độ giải mãSao chép bộ nhớ tức thờiYêu cầu giải nén DeflateYêu cầu giải nén LZW/ZIPYêu cầu tính toán IDCT
Thứ tự dòng quétTừ dưới lên trên (đảo ngược)Từ trên xuống dướiTừ trên xuống dưới / DảiCác khối MCU theo thứ tự từ trên xuống dưới
Độ phù hợp với WebRất kém (dung lượng quá lớn)Tuyệt vời cho đồ họaKém (xuất bản máy tính để bàn)Tuyệt vời cho nhiếp ảnh

Các dạng hỏng thường gặp và hướng dẫn khôi phục bằng mã hex

Hình ảnh hiển thị bị cắt chéo hoặc nghiêng một góc.

Nguyên nhân gốc rễ: Tính toán đệm hàng không chính xác (không đệm mỗi dòng quét theo ranh giới 4-byte).

Khắc phục: Mã hóa lại bằng Trình chuyển đổi hình ảnh File2File.app để ép buộc độ dài dòng quét 32-bit chính xác.

Phân tích bảo mật và các đường tấn công nhằm vào bộ phân tích cú pháp

Các bộ giải mã BMP thường gặp lỗi đọc tràn bộ đệm khi cấp phát bộ nhớ dựa trên các kích thước tiêu đề DIB không đáng tin cậy.

Các véc-tơ tấn công đã biết

  • Tràn số nguyên trong phép tính chiều rộng * chiều cao * bpp dẫn đến phân vùng heap nhỏ và ghi ngoài giới hạn.
  • Trình tự thoát độ dài chuỗi RLE8/RLE4 bị hỏng gây ra việc ghi bộ nhớ vượt quá vùng đệm được cấp phát.
  • Từ chối dịch vụ thông qua phân bổ bộ nhớ đa gigabyte do kích thước tiêu đề được thiết kế độc hại kích hoạt.

Biện pháp phòng thủ tốt nhất: Xác thực nghiêm ngặt các giới hạn chiều rộng, chiều cao và độ sâu bit của tiêu đề DIB trước khi cấp phát bộ nhớ đích.

Nguồn gốc lịch sử và các cột mốc

1998Windows 98 giới thiệu BITMAPV5HEADER, bổ sung quản lý cấu hình màu ICC và hiệu chỉnh gamma.
1990Windows 3.0 chuẩn hóa thông số kỹ thuật DIB BITMAPINFOHEADER trên toàn bộ hệ điều hành.
1987Được giới thiệu cùng với Windows 2.0 và OS/2 1.1 dưới dạng định dạng raster hiển thị gốc.

Ưu điểm & Lợi ích chính

  • Không suy giảm chất lượng do nén: Lưu trữ điểm ảnh chính xác từng bit 100% và không có hiện tượng giảm chất lượng do nén.
  • Windows có codec BMP tích hợp, còn khả năng hỗ trợ trên hệ điều hành và ứng dụng khác thì khác nhau.
  • Độ phức tạp khi giải mã cực kỳ thấp khiến nó trở nên lý tưởng cho các vi điều khiển nhúng và giáo dục lập trình đồ họa.

Hạn chế & Nhược điểm kỹ thuật

  • Kích thước tệp cực kỳ lớn do thiếu các thuật toán nén entropy hiện đại như DEFLATE hoặc mã hóa Huffman.
  • Không hiệu quả cho việc truyền tải qua web hoặc phân phối qua mạng di động.
  • Thứ tự dòng quét từ dưới lên trên đòi hỏi phải đảo ngược hàng dọc trong các luồng xử lý đồ họa từ trên xuống hiện đại.

Thông tin kỹ thuật thú vị

  • BMP mặc định lưu các dòng quét hình ảnh theo thứ tự ngược (từ dưới lên trên) do hệ tọa độ Descartes được sử dụng trong OS/2.
  • Nếu giá trị chiều cao trong tiêu đề BMP được đặt thành một số âm, hình ảnh sẽ được giải mã xuôi chiều (từ trên xuống dưới).
  • Mỗi dòng quét trong tệp BMP phải được đệm các số không để đạt bội số của 4 byte (căn chỉnh ranh giới 32-bit).

Các câu hỏi kỹ thuật thường gặp

Vì sao các tệp BMP có dung lượng lớn như vậy?

Tệp BMP lưu trữ giá trị màu thô, chưa nén cho từng điểm ảnh, trong khi các định dạng như PNG nén dữ liệu đó mà không làm giảm chất lượng.

BMP có hỗ trợ độ trong suốt không?

Có. Các file BMP 32-bit (sử dụng BITMAPV3HEADER hoặc mới hơn) có thể lưu trữ kênh alpha 8-bit, mặc dù khả năng hỗ trợ có thể khác nhau ở các phần mềm cũ hơn.

Làm thế nào để giảm dung lượng tệp BMP?

Chuyển BMP sang PNG có thể giảm dung lượng mà vẫn giữ giá trị pixel, nhưng kết quả tùy nội dung ảnh và cách mã hóa BMP.