粤嵌gec6818开发板显示bmp图片 | 您所在的位置:网站首页 › 鸿合触摸屏显示错位 › 粤嵌gec6818开发板显示bmp图片 |
前段时间做了一个项目,用到了linux环境下gec6818开发板显示bmp文件,在这里给大家分享一下。 要在LCD上显示bmp图片首先要打开lcd文件 /*LCD文件*/ lcd_fd = open("/dev/fb0", O_RDWR); if (lcd_fd < 0) { printf("打开LCD文件失败\n"); return -1; } printf("LCD文件初始化完毕\n");如果用直接写rgb值的方法回导致屏幕刷新特别慢,所以这里使用的是内存映射的方法 /*内存映射*/ FB = (int *)mmap(NULL, 800*480*4, PROT_READ | PROT_WRITE, MAP_SHARED,lcd_fd, 0); printf("内存映射完毕\n");然后是调用bmp显示函数,这里用两个函数分别显示全屏图片和任意大小图片 /* 功能:显示800*480大小的bmp图片。 参数: char *pathname:要显示图片的名字。 int *show_1152000bmp_fd:被映射区的指针。 返回值:成功 0 失败 -1 */ int show_1152000bmp(char *pathname, int *show_1152000bmp_fd) { //1、打开BMP格式图片和lcd显示屏 int fd_bmp = open(pathname, O_RDWR); if(fd_bmp == -1) { printf("show_1152000bmp(), open bmp fail!\n"); return -1; } //2、去掉54个字节 int ret = lseek(fd_bmp, 54, SEEK_SET); if(ret == -1) { printf("show_1152000bmp(), lseek bmp fail!\n"); return -1; } //3、读取BMP数据到lcd屏幕中 char bmp_buf[800*480*3]; int lcd_buf[800*480]; bzero(bmp_buf, 800*480*3); bzero(lcd_buf, 800*480); ret = read(fd_bmp, bmp_buf, 800*480*3);//BMP数据放到了bmp_buf中 if(ret == -1) { printf("show_1152000bmp(), read bmp fail!\n"); return -1; } //4、关闭文件,回收资源 close(fd_bmp); //5、800*480个A像素变成800*480个B像素算法。 int i; for(i=0; i |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |