Bài tập mẫu về đề tài: Tìm hiểu cấu trúc header của file BMP. Được trình bày ngắn gọn, xúc tích, dễ hiểu và đầy đủ. Nhận được đánh giá tốt trong thang điểm của giảng viên khi thuyết trình hoặc làm bài tập báo cáo. Phù hợp với các bạn sinh viên sử dụng trong học tập cũng như nhân viên cần thuyết trình hoặc hỗ trợ giảng dạy.
MỤC LỤC TRÌNH BÀY CẤU TRÚC HEADER CỦA FILE BMP Giới thiệu Trong đồ họa máy vi tính, Bitmap tập tin định dạng ảnh phổ biến biết đến với tên tiếng anh Windows bitmap, định dạng tập tin hình ảnh phổ biến Các tập tin đồ họa lưu dạng ảnh bitmap thường có BMP DIB DIB (Device Independent Bitmap) Các thuộc tính tiêu biểu tập tin ảnh bitmap Các thuộc tính tiêu biểu tập tin ảnh BMP(cũng file ảnh nói chung) - Số bit điểm ảnh (bit per pixel), thường ký hiệu n Một ảnh BMP n-bit có 2n màu Giá trị n lớn ảnh có nhiều màu, rõ nét Giá trị tiêu biểu n (ảnh đen trắng), (ảnh 16 màu), (ảnh 256 màu), 16 (ảnh 65536 màu) 24 (ảnh 16 triệu màu) Ảnh BMP 24-bit có chất - lượng hình ảnh trung thực Chiều cao ảnh (height), cho điểm ảnh (pixel) Chiều rộng ảnh (width), cho điểm ảnh Cấu trúc tập tin bitmap Cấu trúc tập tin ảnh BMP bao gồm phần: - Bitmap Header (14 bytes): giúp nhận dạng tập tin bitmap Bitmap Information (40 bytes): lưu số thông tin chi tiết giúp hiển thị ảnh Color Palette (4*x bytes), x số màu ảnh: định nghĩa màu sử - dụng ảnh Bitmap Data: lưu liệu ảnh Đặc điểm tập tin bitmap Đặc điểm bật định dạng BMP tập tin hình ảnh thường khơng nén thuật toán Khi lưu ảnh, điểm ảnh ghi trực tiếp vào tập tin –một điểm ảnh mô tả hay nhiều byte tùy thuộc vào giá trị n ảnh Do đó, hình ảnh lưu dạng BMP thường có kích cỡ lớn, gấp nhiều lần so với ảnh nén (chẳng hạn GIF, JPEG hay PNG) Định dạng BMP hỗ trợ hầu hết phần mềm đồ họa chạy Windows, số ứng dụng chạy MS-DOS Ngay từ Windows 3.1, Microsoft cho đời phần mềm PaintBrush, phần mềm hỗ trợ vẽ hình ảnh đơn giản lưu hình ảnh vẽ dạng BMP 16 hay 256 màu Tuy nhiên, kích thước tập tin ảnh BMP lớn, định dạng BMP khơng phù hợp để trao đổi hình ảnh qua mạngInternet (do hạn chế tốc độ truyền liệu) Do đó, trang web thường sử dụng ảnh dạng GIF, JPEG hay PNG Các định dạng hỗ trợ thuật tốn nén hình ảnh, giảm bớt kích cỡ ảnh Cấu trúc Header Bitmap Header (14 bytes) khối byte nằm đầu tệp sử dụng để xác định tệp Một ứng dụng thông thường đọc khối trước để đảm bảo tệp thực tệp BMP khơng bị hỏng byte định dạng tệp BMP ký tự "B" sau ký tự "M" mã hóa ASCII Tất giá trị số nguyên lưu trữ định dạng little-endian (nghĩa byte có ý nghĩa nhỏ trước tiên) Cấu trúc Header file: Hệ Hex Hệ Dec Kích thước (bytes) Mục đích Trường Header sử dụng để xác định tệp BMP DIB 0x42, 0x4D dạng Hex , giống BM ASCII Các mục sau có thể: BM Windows 3.1x, 95, NT, ba OS/2 Mảng cấu trúc bitmap 00 CI OS/2 Cấu trúc màu biểu tượng CP OS/2 Hằng số màu trỏ chuột IC OS/2 Cấu trúc biểu tượng PT OS/2 Con trỏ 02 Kích thước file ảnh BMP tính byte 06 Dự trữ, giá trị tùy thuộc vào ứng dụng tạo file hình ảnh 08 Dự trữ, giá trị tùy thuộc vào ứng dụng tạo file hình ảnh 0A 10 Địa bắt đầu nội dung file Ví dụ BMP Offset Kích thước (byte) Giá trị Hex Giá trị Mục đích BMP header 0h 42 4D “BM” Trường ID (42h, 4Dh) 2h 46 00 00 00 70 bytes (54+16) Kích thước tệp 6h 00 00 Không sử dụng Ứng dụng cụ thể 8h 00 00 Không sử dụng Ứng dụng cụ thể Ah 36 00 00 00 54 bytes (14+40) Nơi mảng pixel liệu tìm thấy DIB header Eh 28 00 00 00 40 bytes Số bytes DIB header từ 12h 02 00 00 00 pixel (từ trang sang phải) Chiều rộng bitmap tình pixel 16h 02 00 00 00 pixel (từ lên) Chiều cao bitmap tính pixel 1Ah 01 00 plane Số lượng mặt phẳng màu sử dụng 1Ch 18 00 24 bits Số bit pixel 1Eh 00 00 00 00 BI_RBG, không nén mảng pixel 22h 10 00 00 00 16 bytes Kích thước liệu bitmap thơ 26h 13 0B 00 00 2835 pixel/mét chiều ngang Độ phân giải in hình ảnh 2Ah 13 0B 00 00 2835 pixel/mét chiều dọc 72 DPI x 39,3701 inch mét mang lại 2834,6472 2Eh 00 00 00 00 màu sắc Số lượng màu bảng màu 32h 00 00 00 00 màu quan trọng có ý nghĩa tất màu quan trọng Bắt đầu mảng Pixel (dữ liệu bitmap) 36h 00 00 FF 0 255 Đỏ, pixel (0,1) 39h FF FF FF 255 255 255 Trắng, pixel (1,1) 3Ch 00 00 00 Đệm cho chỉnh bytes (có thể giá trị khác 0) 3En FF 00 00 255 0 Màu xanh dương, pixel (0,0) 41h 00 FF 00 255 Màu xanh cây, pixel (1,0) 44h 00 00 00 Đệm cho chỉnh bytes (có thể giá trị khác 0)