Ảnh Bitmap được lưu trữ dưới dạng nhị phân, một tệp định dạng bitmap được chia thành các phần cơ bản như: phần tiêu đề file (BITMAP HEADER), thông tin về ảnh (BITMAP INFOR), bảng màu (PALLETE Table) và vùng dữ liệu ảnh (DATA). Và thứ tự các phần của tệp ảnh được lưu trữ tuần tự trong bộ nhớ như trong hình Hình 3.1
.BITMAP HEADER BITMAP INFOR PALLETE Table
DATA
Hình 3.1 Minh hoạ cấu trúc tệp ảnh bitmap
Ý nghĩa các phần trong tệp ảnh bitmap
Bitmap Header: mô tả thông tin chung về File định dạng bitmap, độ dài của phần này được cố định với mọi file ảnh bitmap
Bitmap Infor: mô tả thông tin về ảnh được lưu trữ, độ dài của phần này cũng cố định.
Pallete Table: chính là bảng màu của ảnh bitmap, độ dài của phần này có thể bằng không (không có bảng màu) đối với ảnh đen trắng và ảnh màu có số lượng màu lớn hơn 256 màu.
Data: Thông tin của từng điểm ảnh, độ dài của phần này phụ thuộc kích thước ảnh. Phần Data lưu trữ ảnh theo hướng từ dưới lên trên và từ trái qua phải.
Kích thước và giá trị các trường trong tệp ảnh bitmap
Bitmap Header
Phần bitmap header có độ dài cố định là: 14 byte, phần này dùng để mô tả thông tin chung về file như: Kiểu file, độ dài của tệp và một số thông tin liên quan đến tệp ảnh.
Ý nghĩa của từng trường được mô tả trong bảng 3.1
Offset (byte) Giá trị Ý nghĩa
1 „B‟ Định danh kiểu file để các
chương trình nhận dạng
2 „M‟
3 -> 6 Unsigned long Kích thước file
7 -> 10 Zero Reserved
11 -> 14 Unsigned long Địa chỉ phần dữ liệu ảnh
Bảng 3.1 Ý nghĩa từng trường trong vùng Bitmap Header Trong phần Bitmap Header có mô tả thông tin về độ dài của file, thông tin này thực sự cần thiết đối với mọi chương trình. Nhưng qua quá trình thực
nghiệm đối với một số file thì thông tin này lại không chính xác, và trong luận văn đưa ra cách tính kích thước file thông qua công thức:
FileSize = Sizeof(Bitmap Header) + Sizeof(Bitmap Infor)
+ Sizeof(Pallete) + Sizeof(Data) (3.1) Địa chỉ vị (offset) của vùng dữ liệu có thể được xác định thông qua công thức:
Địa chỉ vùng data = 54 + Sizeof(Pallete Table) (3.2) Đối với ảnh đen trắng và ảnh màu có số lượng màu lớn hơn 256 màu thì giá trị địa chỉ vùng data cố định là 54, vì các loại ảnh này không tổ chức bảng màu cho các điểm ảnh.
Bitmap Infor
Bitmap Infor dùng để mô tả thông tin về ảnh đang được lưu trữ trong file, kích thướcc của phần này cố định là 40 byte.
Ý nghĩa và giá trị của từng trường trong vùng Bitmap Infor được mô tả chi tiết trong Bảng 3.2
Offset (byte)
Giá trị Ý nghĩa
1 -> 4 40 Số lượng byte của cùng Bitmap Infor
5->8 Unsigned long Độ rộng của ảnh tính theo Pixel
9 -> 12 Unsigned long Độ cao của ảnh tính theo Pixel
15 -> 16 Unsigned integer Số bit để biểu diễn một điểm ảnh
17 -> 20 Unsigned long Kiểu nén
21 -> 24 Unsigned long Kích thước của ảnh tính theo Byte
25 -> 28 Unsigned long Độ phân giải của ảnh theo chiều ngang
29 -> 32 Unsigned long Độ phân giải của anh theo chiều ngang
33->36 Unsigned long Số lượng màu trong bảng màu
37 -> 40 Unsigned long Số màu quan trọng
Bảng 3.2 Ý nghĩa và giá trị các trường trong vùng Bitmap Infor
Pallete Table
Bảng màu là tập các màu được sử dụng trong ảnh (ảnh 8 bit màu), mỗi một màu trong bảng màu được gọi là một Entry và được lưu trữ bởi 4 byte, mỗi thành phần màu được lưu trữ một byte còn một byte để dữ trữ (chứa dùng) và thứ tự lưu trữ là B, G, R, Reserved. Như vậy kích thước của bảng màu có thể được tính theo công thức:
Sizeof(Pallete Table) = (Number color) * 4 (3.3)
Data
Vùng dữ liệu ảnh là giá trị của các điểm ảnh, kích thước của vùng dữ liệu ảnh phụ thuộc vào độ rộng, chiều cao và kiểu ảnh. Với ảnh 8 bit màu thì kích thước vùng ảnh có thể được tính theo công thức (3.4), công thức (3.5) dùng để tính tích thươc vùng ảnh
Sizeof(Data) = Width * Height (3.4) Sizeof(Data) = Width * Height * Bit_Number_of_Pixel (3.5) Với ảnh 8 bit màu giá trị của mỗi điểm ảnh trong vùng Data là chỉ số của màu trong bảng màu, chỉ số màu của điểm ảnh là một số nguyên có giá trị từ 0 đến 255 và được lưu trữ trong một byte, do vậy kích thước của vùng này được tính theo công thức (3.4).
Như đã trình bày ở trên, với ảnh có số lượng màu lớn hơn 256 màu thì giá trị trong vùng Data chính là giá trị của các thành phần màu cơ bản, số lượng bit dùng để biểu diễn giá trị cho từng thành phần màu có thể sẽ khác nhau phụ thuộc vào chất lượng ảnh. Đối với ảnh 24 bit màu, mỗi thành phần màu được lưu trữ bởi 8 bit và thứ tự lưu trữ là B, G, R.