本片文章将讲解如何在屏幕显示图片。本文使用的屏幕分辨率为1024x600。
重点集中于函数int show_bmp(const char *bmp_path)
首先,将图片读入,图片是bmp格式的图片
int bmp_id = open(bmp_path, O_RDONLY);
if (bmp_id < 0)
{
perror("open bmp error");
return -1;
}
// 跳过前54个字节
lseek(bmp_id, 54, SEEK_SET);
char bmp_buffer[1024*600*3] = {0};
read(bmp_id, bmp_buffer, 1024*600*3);
// 关闭文件
close(bmp_id);
跳过前54个字节,是应为BMP格式文件中,前54个字节包含了图片的头信息
- 文件头(14字节):描述文件类型、文件大小、保留字段、数据偏移量等。
- 信息头(40字节):描述图像的宽度、高度、颜色平面、每个像素的位数、压缩方式、图像数据大小、水平和垂直分辨率、使用的颜色数和重要颜色数等。
BMP给像素通常用3个字节表示,分别是BGR,每个 char占用1个字节。
为了显示图片,需要将BGR转成ARGB数据
// 将BGR数据转换为ARGB数据
int lcd_buffer[1024*6