失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 嵌入式开发板bmp图片显示

嵌入式开发板bmp图片显示

时间:2019-11-14 02:10:45

相关推荐

嵌入式开发板bmp图片显示

一、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图片显示》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。