Cấu Trúc File Bitmap, đọc Và Xử Lý File Bitmap - TaiLieu.VN
Có thể bạn quan tâm
- CDMA là gì
- Mạng truyền thông công nghiệp
- Xử lý tín hiệu số
- Hệ thống viễn thông
- Thông tin quang
-
- Mạch khuếch đại
- HOT
- TL.01: Bộ Tiểu Luận Triết Học
- LV.26: Bộ 320 Luận Văn Thạc Sĩ Y...
- FORM.08: Bộ 130+ Biểu Mẫu Thống Kê...
- FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo...
- CEO.24: Bộ 240+ Tài Liệu Quản Trị Rủi...
- CMO.03: Bộ Tài Liệu Hệ Thống Quản Trị...
- FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế...
- LV.11: Bộ Luận Văn Tốt Nghiệp Chuyên...
- CEO.27: Bộ Tài Liệu Dành Cho StartUp...
Chia sẻ: Abcdef_45 Abcdef_45 | Ngày: | Loại File: PDF | Số trang:10
Thêm vào BST Báo xấu 1.261 lượt xem 98 download Download Vui lòng tải xuống để xem tài liệu đầy đủTrong đồ họa máy vi tính, BMP, còn được biết đến với tên tiếng Anh khác là Windows bitmap, là một định dạng tập tin hình ảnh khá phổ biến. Các tập tin đồ họa lưu dưới dạng BMP thường có đuôi là .BMP hoặc .DIB (Device Independent Bitmap). Các thuộc tính tiêu biểu của một tập tin ảnh BMP (cũng như file ảnh nói chung) là số bit trên mỗi điểm ảnh (bit per pixel), thường được ký hiệu bởi n. Một ảnh BMP n-bit có 2n màu. Giá trị n càng lớn thì ảnh càng có nhiều...
AMBIENT/ Chủ đề:- Công nghệ thông tin
- cấu trúc dữ liệu
- lý thuyết đồ thị
- Javascript
- ASP.NET
- Tin học đại cương
- giáo trình Tin học đại cương
- bài giảng Tin học đại cương
- tài liệu Tin học đại cương
- lý thuyết Tin học đại cương
Bình luận(0) Đăng nhập để gửi bình luận!
Đăng nhập để gửi bình luận! LưuNội dung Text: Cấu trúc file bitmap, đọc và xử lý file bitmap
- Cấu trúc file bitmap, đọc và xử lý file bitmap Trong đồ họa máy vi tính, BMP, còn được biết đến với tên tiếng Anh khác là Windows bitmap, là một định dạng tập tin hình ảnh khá phổ biến. Các tập tin đồ họa lưu dưới dạng BMP thường có đuôi là .BMP hoặc .DIB (Device Independent Bitmap). Các thuộc tính tiêu biểu của một tập tin ảnh BMP (cũng như file ảnh nói chung) là số bit trên mỗi điểm ảnh (bit per pixel), thường được ký hiệu bởi n. Một ảnh BMP n-bit có 2n màu. Giá trị n càng lớn thì ảnh càng có nhiều màu, và càng rõ nét hơn. Giá trị tiêu biểu của n là 1 (ảnh đen trắng), 4 (ảnh 16 màu), 8 (ảnh 256 màu), 16 (ảnh 65536 màu) và 24 (ảnh 16 triệu màu). Ảnh BMP 24-bit có chất lượng hình ảnh trung thực nhất. chiều cao của ảnh (height), cho bởi điểm ảnh (pixel). chiều rộng của ảnh (width), cho bởi điểm ảnh. Cấu trúc tập tin ảnh BMP bao gồm 4 phần Bitmap Header (14 bytes): giúp nhận dạng tập tin bitmap. Bitmap Information (40 bytes): lưu một số thông tin chi tiết giúp hiển thị ảnh.
- Color Palette (4*x bytes), x là số màu của ảnh: định nghĩa các màu sẽ được sử dụng trong ảnh. Bitmap Data: lưu dữ liệu ảnh. Đặc điểm nổi bật nhất của định dạng BMP là tập tin hình ảnh thường không được nén bằng bất kỳ thuật toán nào. Khi lưu ảnh, các điểm ảnh được ghi trực tiếp vào tập tin – một điểm ảnh sẽ được mô tả bởi một hay nhiều byte tùy thuộc vào giá trị n của ảnh. Do đó, một hình ảnh lưu dưới dạng BMP thường có kích cỡ rất lớn, gấp nhiều lần so với các ảnh được nén (chẳng hạn GIF, JPEG hay PNG). Định dạng BMP được hỗ trợ bởi hầu hết các phần mềm đồ họa chạy trên Windows, và cả một số ứng dụng chạy trên MS-DOS. Ngay từ Windows 3.1, Microsoft đã cho ra đời phần mềm PaintBrush, một phần mềm hỗ trợ vẽ hình ảnh đơn giản và lưu hình ảnh được vẽ dưới dạng BMP 16 hay 256 màu. Tuy nhiên, do kích thước tập tin ảnh BMP quá lớn, định dạng BMP không phù hợp để trao đổi hình ảnh qua mạng Internet (do hạn chế về tốc độ truyền dữ liệu). Do đó, các trang web thường sử dụng ảnh dạng GIF, JPEG hay PNG. Các định dạng này hỗ trợ các thuật toán nén hình ảnh, vì vậy có thể giảm bớt kích cỡ của ảnh. (theo Wikipedia)
- Cấu trúc Bitmap Header và Bitmap Information struct bmHeader // 14 byte { // 2 byte - Mã nhận dạng file bitmap short type; unsigned int size;// 4 byte - Kích thước của file tính theo byte // 4 byte - Dự trữ, không sử dụng int reserved; // 4 byte - Vị trí bắt đầu dữ liệu ảnh int offset; }; struct bmInfo // 40 byte { // 4 byte - Kích thước phần Information (luôn l à unsigned long infoSize; 40) // 4 byte - Chiều rộng ảnh tính bằng pixel unsigned long width; // 4 byte - Chiều cao ảnh tính bằng pixel unsigned long height; // 2 byte - Số plane màu (thường là 1) unsigned short planes; unsigned short bitsPerPixel;// 2 byte - Độ sâu của màu, mang các giá trị 1,4,8 hoặc 24 unsigned long compression; // 4 byte - Kiểu nén (0: không nén);(1:run_lenght(8 bit/pixel));(2:run_length(4 bit/pixel))
- // 4 byte - Kích thước phần dữ liệu ảnh tính theo unsigned long sizeImage; byte // 4 byte - Độ phân giải ngang (metter) long xPelsPerMeter; // 4 byte - Độ phân giải dọc (metter) long yPelsPerMeter; // 4 byte - Số màu sử dụng (= 0 nếu là tất cả) unsigned long clrUsed; unsigned long clrImportant; // 4 byte - Số màu quan trọng (= 0 nếu là tất cả) }; Để đọc file bitmap ta cần mở file để đọc dưới dạng nhị phân: #include using namespace std; ... ifstream fi(fName, ios::binary); //Các lệnh đọc file fi.close();
- Ta dùng phương thức read của ifstream để đọc dữ liệu Bitmap Header v à Bitmap Infomation Phương thức (hàm) read của ifstream nhận vào 2 tham số: một con trỏ kiểu char và kích thước dữ liệu đọc (kiểu int), do đó ta phải “ép kiểu” cho địa chỉ của header và info về kiểu con trỏ char. bmHeader header; bmInfo info; fi.read((char*)&header, sizeof(header)); fi.read((char*)&info, sizeof(info)); Kiểm tra mã nhận dạng xem có đúng là file bitmap hay không const short bmSign = 'MB'; if (header.type != bmSign) //Kiểm tra mã nhận dạng { //Thoát hàm đọc file, trả về kết quả đọc thất bại }
- Đọc bảng màu và dữ liệu ảnh colorPaletteSize = header.offset - 54; //Kích thước của bảng màu char* colorPalette = new char[colorPaletteSize]; fi.read(colorPalette, colorPaletteSize ); char* bmData = new char[info.sizeImage]; fi.read(bmData, info.sizeImage); Class MyBitmap đọc file ảnh bitmap và chuyển từng pixcel v ào mảng 2 chiều /* (c) http://kithuatlaptrinh.tk Class MyBitmap, đọc file ảnh bitmap và chuyển từng pixcel vào mảng 2 chiều Đọc được ảnh 1, 4, 8, 16 và 24 bit Truy xuất từng pixcel bằng toán tử [] nh ư trên mảng 2 chiều */ #pragma once #include
- #include using namespace std; static const short bmSign = 'MB'; //Mã nhận dạng file bitmap #pragma pack(push, 2)// căn l ề 1 byte cho struct struct bmHeader // 14 byte { // 2 byte - Mã nhận dạng file bitmap short type; unsigned int size;// 4 byte - Kích thước của file tính theo byte // 4 byte - Dự trữ, không sử dụng int reserved; // 4 byte - Vị trí bắt đầu dữ liệu ảnh int offset; }; struct bmInfo // 40 byte { // 4 byte - Kích thước phần Information (luôn l à unsigned long infoSize; 40) // 4 byte - Chiều rộng ảnh tính bằng pixel unsigned long width;
- // 4 byte - Chiều cao ảnh tính bằng pixel unsigned long height; // 2 byte - Số plane màu (thường là 1) unsigned short planes; unsigned short bitsPerPixel;// 2 byte - Độ sâu của màu, mang các giá trị 1,4,8 hoặc 24 unsigned long compression; // 4 byte - Kiểu nén (0: không nén);(1:run_lenght(8 bit/pixel));(2:run_length(4 bit/pixel)) // 4 byte - Kích thước phần dữ liệu ảnh tính theo unsigned long sizeImage; byte // 4 byte - Độ phân giải ngang (metter) long xPelsPerMeter; // 4 byte - Độ phân giải dọc (metter) long yPelsPerMeter; // 4 byte - Số màu sử dụng (= 0 nếu là tất cả) unsigned long clrUsed; unsigned long clrImportant; // 4 byte - Số màu quan trọng (= 0 nếu là tất cả) }; #pragma pack(pop) class CMyBitmap { bmHeader header; bmInfo info;
- //Lưu bảng màu char* colorPalette; unsigned long colorPaletteSize; //Kích thước vùng bảng màu //Lưu dữ liệu ảnh char* bmData; //Kích thước mỗi dòng dữ liệu ảnh (byte) unsigned long rowSize; //Đảo 4 byte Little Endian < -> Big Endian void swap4byte (char*); //Mảng các pixcel unsigned long** pixcel; unsigned long getPixel(unsigned long, unsigned long); void setPixel(unsigned long, unsigned long, unsigned long); void freeMem(); public: unsigned long height(); unsigned long width(); unsigned short bitsPerPixel(); unsigned long* operator [] (unsigned int); //Toán tử lấy pixcel, trả về con trỏ đến dòng i
- bool readFile(const char*); bool writeFile(const char*); CMyBitmap(void); ~CMyBitmap(void); };
CÓ THỂ BẠN MUỐN DOWNLOAD
LV.15: Bộ Đồ Án Tốt Nghiệp Chuyên Ngành Cơ Khí 65 tài liệu 2431 lượt tải Thêm tài liệu vào bộ sưu tập có sẵn: Đồng ý Thêm vào bộ sưu tập mới: *Tên bộ sưu tập Mô Tả: *Từ Khóa: Tạo mới Báo xấu- Hãy cho chúng tôi biết lý do bạn muốn thông báo. Chúng tôi sẽ khắc phục vấn đề này trong thời gian ngắn nhất.
- Không hoạt động
- Có nội dung khiêu dâm
- Có nội dung chính trị, phản động.
- Spam
- Vi phạm bản quyền.
- Nội dung không đúng tiêu đề.
- Về chúng tôi
- Quy định bảo mật
- Thỏa thuận sử dụng
- Quy chế hoạt động
- Hướng dẫn sử dụng
- Upload tài liệu
- Hỏi và đáp
- Liên hệ
- Hỗ trợ trực tuyến
- Liên hệ quảng cáo
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn
Giấy phép Mạng Xã Hội số: 670/GP-BTTTT cấp ngày 30/11/2015 Copyright © 2022-2032 TaiLieu.VN. All rights reserved.
Đang xử lý... Đồng bộ tài khoản Login thành công! AMBIENTTừ khóa » File Có đuôi Bmp
-
File BMP Là Gì? File DIB Là Gì?
-
BMP Là File Gì? Phần Mềm & Cách Mở File . BMP, Sửa File Lỗi
-
Đuôi BMP Là Gì? Tệp định Dạng Hình ảnh Phổ Biến Hiện Nay
-
Làm Thế Nào để Mở Tập Tin .BMP? Thông Tin Về đuôi - Driversol
-
Định Dạng Tệp Bmp - OnlineConvertFree
-
BMP – Wikipedia Tiếng Việt
-
Chuyển đổi JPG Sang BMP (Trực Tuyến Miễn Phí) - Convertio
-
BMP Là Phần Mở Rộng Của Loại File Nào? - IT PARK
-
Bmp Mở Rộng Tập Tin - TapTin
-
Bitmap Image File .bmp File Extension - DownloadAstro
-
BMP Là Gì? Chi Tiết Về BMP Mới Nhất 2021 - LADIGI Academy
-
BMP Là File Gì? Cách Mở File .BMP - Từ điển Số
-
Định Dạng Ảnh Bitmap - Giới Thiệu Và Các Thao Tác Cơ Bản - STDIO
-
Chia Sẻ 3 Cách Chuyển đổi định Dạng Hình ảnh đơn Giản