GEC6818的bmp图片显示

1、bmp概念

bitmap(位图)

.bmp图片与其它图片的区别
jpg/jpeg/png:这些图片都是经过数据压缩后的图片;如果直接读取,并不是图片的原始数据; 必须要先解压再读取。文件较小。
bmp:不采用任何压缩,存储的是图片原始数据;可以直接读取。文件较大。

大小(byte):800*480*3 + 54 = 1152000 + 54 = 1152054

说明:都出来的54个字节是bmp图片的头文件(包含图片的大小,格式等等)

bmp图片一个像素点的大小     24bit(3个字节)
说明:lcd一个像素点的大小是32bit(4个字节)

bmp图片一个像素点的组成方式
LCD:ARGB
BMP:RGB(少了一个透明度)

BMP文件开头部分是BMP格式头,里面存放了RGB数据的尺寸、分辨率、色深等重要信息。BMP格式头中包含了如下三个结构体:

  • bitmap_header(必有)
  • bitmap_info(必有)
  • rgb_quad(可选,一般没有)

 

struct bitmap_header
{
	int16_t type;
	int32_t size; // 图像文件大小
	int16_t reserved1;
	int16_t reserved2;
	int32_t offbits; // bmp图像数据偏移量
}__attribute__((packed));

struct bitmap_info
{
	int32_t size;   // 本结构大小	
	int32_t width;  // 图像宽
	in
GEC6818显示BMP图片,要先了解BMP格式头以获取图片相关信息,因BMP文件内部存储的RGB数据无图片尺寸、色深等具体信息,需从格式头获取后处理RGB数据[^2]。 显示800*480大小的BMP图时,格式与之类似,若要显示任意大小的BMP图片,需添加获取图片宽度和高度的代码,同时可自行挑选图片出现的位置,但要注意避免非法访问,防止出现段错误。此外,制作任意大小的BMP图片时,要保证宽度是4的倍数。不过实际中较少使用BMP照片,因其占用空间大,会增加硬件成本[^1]。 以下为示例代码框架(仅为示意,实际使用需根据情况完善): ```c #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> // 定义BMP文件头结构体 typedef struct { unsigned char signature[2]; unsigned int fileSize; unsigned short reserved1; unsigned short reserved2; unsigned int dataOffset; } BMPFileHeader; // 定义BMP信息头结构体 typedef struct { unsigned int headerSize; int width; int height; unsigned short planes; unsigned short bitCount; unsigned int compression; unsigned int imageSize; int xPixelsPerMeter; int yPixelsPerMeter; unsigned int colorsUsed; unsigned int colorsImportant; } BMPInfoHeader; int main() { int fd = open("test.bmp", O_RDONLY); if (fd == -1) { perror("Failed to open BMP file"); return -1; } BMPFileHeader fileHeader; read(fd, &fileHeader, sizeof(BMPFileHeader)); BMPInfoHeader infoHeader; read(fd, &infoHeader, sizeof(BMPInfoHeader)); // 获取图片宽度和高度 int width = infoHeader.width; int height = infoHeader.height; // 后续可根据获取的信息进行图片显示操作 close(fd); return 0; } ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值