Hình ảnh BMP (DIB) được tạo bởi một tiêu đề theo sau là dữ liệu 1 màu không nén (đối với hình ảnh 24 bpp, đó là 3 byte trên mỗi pixel, được lưu trữ theo thứ tự hàng ngược lại và với khoảng cách hàng 4 byte).
Các byte cho dữ liệu màu được sử dụng để đại diện cho màu sắc (tức là không có byte nào trong số chúng được "bắt buộc" bởi định dạng tệp 2 , tất cả đều đến từ màu của mỗi pixel) và có sự tương ứng 1: 1 hoàn hảo giữa màu pixel và byte được viết trong file; do đó, bằng cách sử dụng các màu được chọn hoàn hảo, bạn thực sự có thể viết bất cứ thứ gì bạn muốn vào tệp (ngoại trừ tiêu đề).
Khi bạn mở tệp được tạo trong notepad, dữ liệu màu sẽ được hiển thị dưới dạng văn bản; bạn vẫn có thể thấy rõ từ tiêu đề (phần từ đầu BM
đến đầu văn bản), được định dạng tệp bắt buộc.
Theo tôi video này được thực hiện theo cách này: đầu tiên tác giả tính toán kích thước cần thiết cho bitmap và tạo một tệp DIB có kích thước chính xác được tô bằng màu mở rộng thành một mẫu đơn giản (ví dụ: tất cả các byte 65 => 'A'
); sau đó thay thế mẫu đó bằng mã "tải trọng", như được hiển thị trong video.
Tuy nhiên, hãy lưu ý rằng không phải là không thể tạo thủ công toàn bộ bằng notepad - với hộp thoại chọn màu, bảng ASCII và kiến thức cơ bản về định dạng DIB, bạn có thể thực hiện thủ công này, nhưng sẽ chậm hơn nhiều và dễ xảy ra lỗi.
Thông tin thêm về định dạng DIB
- Có các DIB được nén RLE, nhưng trong trường hợp này, các bitmap không nén được sử dụng (và dù sao thì chúng cũng rất hiếm khi được sử dụng).
- Ngoại trừ sải chân, điều đó đã được tránh sử dụng các hàng nhiều 4 byte.