Cái này chắc là nhiều người biết lắm nhưng cứ post lên đây mọi người xem thử nghen.
*) Một file *.BMP được chia làm 3 phần chính:
BitmapHeader, BitmapInfor và BitmapData.
Đây là chi tiết
BitmapHeader
Bite # Ý nghĩa Chi tiết
1-2 Nhận dạng file Kiểu arrayp1..2] of char:chứa ký tự BM
3-6 Kích thướ file Kiểu Longint: tính bằng byte
7-10 Reserve nt : tôi chưa biết(có lẽ là tên file thừa)
11-14 Byte bắt đầu Kiểu longint, vị trí byte bắt đầu vùng
vùng data data kể từ đầu file
BitmapInfor
1-4 Số byte trong vùng info Kiểu Longint, hiện tại có
giá trị 40
5-8 Chiều rộng bitmap Kiểu longint tính bằng pixel
9-12 Chiều cao bitmap Kiểu longint tính bằng pixel
13-14 Số Planes màu Kiểu Word số bảng màu
15-16 Số bits cho một pixel Kiểu Word, các giá trị có
thể có 1: Đen/trắng, 4:16
màu, 8:256 màu, 24: 24bit
màu
17-20 Kiểu nén dữ liệu Kiểu Longint có giá trị là
0: Không nén
1: Nén runlength+8bit/pixel
2: Nén runlength+4bit/pixel
21-24 Kích thước ảnh Kiểu Longint, bằng số byte
của ảnh
25-28 Độ phân giải ngang Kiểu Longint, tính bằng pixel
29-32 Độ phân giải dọc Kiểu Longint, tính bằng pixel
33-36 Số màu được sử dụng Kiểu Longint
trong ảnh
37-40 Số màu được sử dụng Kiểu Longint
khi hiện ảnh
Bitmap palette
Tiếp theo sau vùng info là palette màu của BMP, gồm nhiều bộ có kích thước bằng 4 byte xếp liền nhau theo cấu trúc Blue-Green-Red và một Byte dành riêng cho Itensity. Kích thước của vùng Palette màu bằng 4*số màu của ảnh. Vì Palette màu của màn hình có cấu tạo theo thứ tự Red-Green-Blue, nên khi đọc palette màu của ảnh BMP vào ta phải chuyển đổi lại cho phù hợp. Số màu của ảnh được biết dựa trên số bít cho 1 pixel cụ thể là:
8.bits/pixel: ảnh 256 màu, 4bits/pixel: ảnh 16 màu, 24bits/pixel ảnh 24 bít màu
BitmapData:
Phần này kề tiếp ngay sau Palette màu của BMP. Đây là phần chứa các giá trị màu của các điểm ảnh trong BMP. Các điểm ảnh được lưu theo thứ tự từ trái qua phải trên một dòng và các dòng lại được lưu theo thứ tự dưới lên trên. Mỗi Byte trong vùng BitmapData biểu diễn 1 hoặc nhiều điểm ảnh tùy theo số bits cho một pixel.
*) Thuật toán hiển ảnh BMP gồm các bước sau
Đọc BitmapHeader để nhận dạng file có đúng là BMP thật không (hai byte đầu tiên là "BM") và xác định Byte bắt đầu vùng Bitmap Data
Đọc BitmapInfo để lấy các thông tin cơ bản về ảnh như chiểu rộng, chiều cao, số Bits cho 1 pixel từ đó suy ra số màu và kích thước palette màu.
Đọc Palette màu và chuyển đổi palette màu từ dạng Blue-Green-Red-Reverse sang Ren-Green-Blue
Đọc phần Bitmap Data, tính toán và vẽ từng điểm ra màn hình theo thứ tự từ trái qua phải và từ dưới lên trên.
Phân chương trình hẹn mọi người dịp khác bây giờ mỏi tay lắm rồi hìhì!!!!!
Bookmarks