Ảnh bitmap Windows (.bmp)
Microsoft Tiêu chuẩnBitmap 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ữ 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 4DBIỂ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 Container | BITMAPFILEHEADER, tiếp theo là BITMAPINFOHEADER (DIB) và mảng điểm ảnh raster |
| Nén | Dò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ự byte | Little-endian (thứ tự byte Intel x86) |
| Không gian màu | RGB 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 đa | 2.147.483.647 x 2.147.483.647 điểm ảnh (số nguyên có dấu 32 bit) |
| Độ trong suốt | Mặ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ần | Khô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ật | BMP (Hiện tại) | PNG | TIFF | JPG |
|---|---|---|---|---|
| Chế độ nén | Không nén / RLE tối thiểu | Deflate không mất dữ liệu (nhỏ hơn ~70%) | Không nén / LZW / Zip | DCT có mất dữ liệu (nhỏ hơn ~90%) |
| Tốc độ giải mã | Sao chép bộ nhớ tức thời | Yêu cầu giải nén Deflate | Yêu cầu giải nén LZW/ZIP | Yêu cầu tính toán IDCT |
| Thứ tự dòng quét | Từ dưới lên trên (đảo ngược) | Từ trên xuống dưới | Từ trên xuống dưới / Dải | Các khối MCU theo thứ tự từ trên xuống dưới |
| Độ phù hợp với Web | Rất kém (dung lượng quá lớn) | Tuyệt vời cho đồ họa | Ké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
Ư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.
Các cặp chuyển đổi BMP liên quan
Chuyển tệp Bitmap Windows chưa nén sang PNG để nén không mất dữ liệu, giảm dung lượng tệp mà không ảnh hưởng đến chất lượng hình ảnh.
Chuyển đổi ảnh PNG sang bitmap Windows biến dữ liệu raster đã nén thành lưới điểm ảnh chưa nén cho các hệ điều hành cũ và quy trình xử lý phần cứng.
Đặt ảnh chụp màn hình BMP được hỗ trợ lên một trang PDF để dùng trong phiếu yêu cầu hoặc báo cáo. Quy trình này chấp nhận pixel 24-bit hoặc 32-bit không nén, không hỗ trợ các biến thể BMP đã nén.