粤嵌gec6818开发板显示bmp图片 您所在的位置:网站首页 鸿合触摸屏显示错位 粤嵌gec6818开发板显示bmp图片

粤嵌gec6818开发板显示bmp图片

2024-07-18 08:01| 来源: 网络整理| 查看: 265

        前段时间做了一个项目,用到了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 实验室设备网 版权所有