一、bmp图的实现(bitmap位图)
1.怎样去制作位图bmp图
画图软件工具
2.bmp图分辨率
800*480个像素点
3.图片的像素点是多少个字节
1个像素点 = 3个字节
4.大小
800*480*3+54 = 1152054
5.bmp图片的头54个字节是它的图片信息
lseek去掉bmp图片的头54个字节
6.图片像素点的构成
LCD -- ARGB
BMP -- BGR
所以要将bmp图片的像素点进行移位操作
LCD(ARGB) = BMP(BGR)B|G<<8|R<<16
7.读取bmp图片的方式
从左到右,从下往上
8.具体实验代码:
#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <sys/mman.h>int main(){//打开LCDint fd_lcd;fd_lcd = open("/dev/fb0",O_RDWR);if(fd_lcd < 0){printf("open lcd fail\n");return -1;}//映射LCDint *addr;addr = mmap(NULL,800*480*4,PROT_READ|PROT_WRITE,MAP_SHARED,fd_lcd,0);if(addr == NULL){printf("mmap fail\n");return -1;}//读取bmp图片int fd_bmp;fd_bmp = open("a.bmp",O_RDWR);if(fd_bmp < 0){printf("open bmp fail\n");return -1;}lseek(fd_bmp,54,SEEK_SET);//去掉头54个字节char buf[800*480*3];read(fd_bmp,buf,800*480*3);int x,y;int i = 0;for(y=0;y<480;y++){for(x=0;x<800;x++)*(addr+(479-y)*800+x) = buf[3*(y*800+x)]|buf[3*(y*800+x)+1]<<8|buf[3*(y*800+x)+2]<<16;}close(fd_lcd);close(fd_bmp);return 0;}
如果觉得《嵌入式开发板bmp图片显示》对你有帮助,请点赞、收藏,并留下你的观点哦!