void  showbmp2()

 {

     int x,y;

     unsigned char *p;

     int index=0;

     struct fb_var_screeninfo vinfo; 

     struct fb_fix_screeninfo finfo;

struct fb_bitfield red; 

     struct fb_bitfield green; 

     struct fb_bitfield blue;

//open the showdeviece

     fbfd = open("/dev/fb0", O_RDWR); 

     if (!fbfd) 

     { 

  printf("Error: cannot open framebuffer device.\n"); 

  exit(1); 

     } 

  

     if (ioctl(fbfd, FBIOGET_FSCREENINFO, &finfo)) 

     { 

  printf("Error£ºreading fixed information.\n"); 

  exit(2); 

     } 

  

     if (ioctl(fbfd, FBIOGET_VSCREENINFO, &vinfo)) 

     { 

  printf("Error: reading variable information.\n"); 

  exit(3); 

     } 

  

     printf("R:%d,G:%d,B:%d \n", vinfo.red, vinfo.green, vinfo.blue ); 

  

     printf("%dx%d, %dbpp\n", vinfo.xres, vinfo.yres, vinfo.bits_per_pixel ); 

     xres = vinfo.xres; 

     yres = vinfo.yres; 

     bits_per_pixel = vinfo.bits_per_pixel; 

  

     //ŒÆËãÆÁÄ»µÄ×ÜŽóС£š×֜ڣ©  

     screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8; 

     printf("screensize=%d byte\n",screensize); 

  

     //¶ÔÏóÓ³Éä  

     fbp = (char *)mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, fbfd, 0); 


     if ((int)fbp == -1) 

     { 

  printf("Error: failed to map framebuffer device to memory.\n"); 

  exit(4); 

     } 

  

     printf("sizeof file header=%d\n", sizeof(BITMAPFILEHEADER)); 

  

     printf("into show_bmp function\n"); 

     FILE *fp[3];

fp[0] = fopen("./333.bmp","rb+");

  fp[1] = fopen("./444.bmp","rb+");

  fp[2] = fopen("./555.bmp","rb+");

fread(data,54,1,fp[0]);

     fread(data,WIDTH*HEIGHT*3,1,fp[0]);

     for(y=0;y<HEIGHT;y++)

     {

  for(x=0;x<WIDTH;x++)

  {

      //if(x<640)

      {

       buf[1][(((HEIGHT-1)-y)*WIDTH+x)*4 + 0] = data[((y*WIDTH) + x)*3 + 0];

          buf[1][(((HEIGHT-1)-y)*WIDTH+x)*4 + 1] = data[((y*WIDTH) + x)*3 + 1];

          buf[1][(((HEIGHT-1)-y)*WIDTH+x)*4 + 2] = data[((y*WIDTH) + x)*3 + 2];

          //buf[1][(479-y)*WIDTH+x)*4 + 3] = data[((y*640) + x)*3 + 0];

      }

  }

     }

 //

     fread(data,54,1,fp[1]);

     fread(data,WIDTH*HEIGHT*3,1,fp[1]);

     for(y=0;y<HEIGHT;y++)

     {

  for(x=0;x<WIDTH;x++)

  {

      //if(x<640)

      {

       buf[2][(((HEIGHT-1)-y)*WIDTH+x)*4 + 0] = data[((y*WIDTH) + x)*3 + 0];

          buf[2][(((HEIGHT-1)-y)*WIDTH+x)*4 + 1] = data[((y*WIDTH) + x)*3 + 1];

          buf[2][(((HEIGHT-1)-y)*WIDTH+x)*4 + 2] = data[((y*WIDTH) + x)*3 + 2];

          //buf[1][(479-y)*WIDTH+x)*4 + 3] = data[((y*640) + x)*3 + 0];

      }

  }

     }

 //

     fread(data,54,1,fp[2]);

     fread(data,WIDTH*HEIGHT*3,1,fp[2]);

     for(y=0;y<HEIGHT;y++)  

     {

  for(x=0;x<WIDTH;x++)

  {

     // if(x<640)

       {

       buf[3][(((HEIGHT-1)-y)*WIDTH+x)*4 + 0] = data[((y*WIDTH) + x)*3 + 0];

          buf[3][(((HEIGHT-1)-y)*WIDTH+x)*4 + 1] = data[((y*WIDTH) + x)*3 + 1];

          buf[3][(((HEIGHT-1)-y)*WIDTH+x)*4 + 2] = data[((y*WIDTH) + x)*3 + 2];

          //buf[1][(479-y)*WIDTH+x)*4 + 3] = data[((y*640) + x)*3 + 0];

      }

  }

     }

     fclose(fp[0]); fclose(fp[1]); fclose(fp[2]);

     //

     while(1)

     {

memcpy(fbp,buf[index++%picindex + 1],WIDTH*HEIGHT*4);

      sleep(2);

}   

     printf("/nover!/n");

return ;

 }

linux下的framebuffer显示图片的更多相关文章

  1. linux下tomcat6无法显示图片验证码 少了图形插件

    linux下tomcat6无法显示图片验证码(windows下显示正常) 原创 2015年10月20日 10:31:47 3526 linux下tomcat6无法显示图片验证码(windows下显示正 ...

  2. Linux下让tomcat显示图片(jdk1.4, tomcat4.0 或更高版本)

    1.步骤:修改$CATALINA_HOME/bin/catalina.sh文件($CATALINA_HOME是指tomcat安装目录),在原文件的40行新增如下内容即可CATALINA_OPTS=&q ...

  3. Linux 下V4l2摄像头采集图片,实现yuyv转RGB,RGB转BMP,RGB伸缩,jpeglib 库实现压缩RGB到内存中,JPEG经UDP发送功(转)

    ./configure CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld --host=arm-linux --prefix=/usr/loca ...

  4. linux下history命令显示历史指令记录的使用方法

    Linux系统当你在shell(控制台)中输入并执行命令时,shell会自动把你的命令记录到历史列表中,一般保存在用户目录下的.bash_history文件中.默认保存1000条,你也可以更改这个值 ...

  5. Linux下ls命令显示符号链接权限为777的探索

    Linux下ls命令显示符号链接权限为777的探索 --深入ls.链接.文件系统与权限 一.摘要 ls是Linux和Unix下最常使用的命令之一,主要用来列举目录下的文件信息,-l参数允许查看当前目录 ...

  6. 【Linux基础】linux下修改ls显示的时间格式

    1.修改ls显示格式 ls -l --time-style '+%Y/%m/%d %H:%M:%S' drwxr-x--- edwetl edwetl // :: arc_test ls -l --t ...

  7. Linux下printf函数显示不同的颜色(转)

    Linux下printf函数显示不同的颜色 在学习Linux网络编程的时候做一个聊天系统,当时为了界面更漂亮点,于是搜索了下关于printf()函数的用法,给printf的输出加上些特效比如颜色,可以 ...

  8. linux下打开txt显示乱码的解决方法

    Linux打开txt文件乱码的解决方法   Linux显示在Windows编辑过的中文就会显示乱码是由于两个操作系统使用的编码不同所致.Linux下使用的编码是utf8,而Windows使用的是gb1 ...

  9. Linux下ifconfig不显示ip地址问题总结

    问题一:ifconfig之后只显示lo,没有看到eth0 ? eth0设置不正确,导致无法正常启动,修改eth0配置文件就好 ubuntu 12.04的网络设置文件是/etc/network/inte ...

随机推荐

  1. 模型的元数据Meta -- Django从入门到精通系列教程

    该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...

  2. zookeeper 环境搭建

    1.准备三台服务器 ip分别为:192.168.100.128.192.168.100.129.192.168.100.133 a.修改主机名称 vi /etc/sysconfig/network 修 ...

  3. 单元测试系列:Mock工具Jmockit使用介绍

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6760272.html Mock工具Jm ...

  4. vsftp实现只能上传不能下载、删除权限配置

    vsftpd可以对每个用户特别限制.只要给那个用户建立一个设置文件,然后在文件里设置 在vsftpd.conf里加user_config_dir=/etc/vsftpd/vsftpd_user_con ...

  5. es随想一

    一.安全问题 前段时间网上看到的,大量的MongoDB服务器和ElasticSearch服务器被黑客攻击,留下勒索信息. ElasticSearch的2种客户端连接方式,transport方式默认的9 ...

  6. BZOJ 2178: 圆的面积并 [辛普森积分 区间并]

    2178: 圆的面积并 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 1740  Solved: 450[Submit][Status][Discus ...

  7. BZOJ 3669: [Noi2014]魔法森林 [LCT Kruskal | SPFA]

    题目描述 为了得到书法大家的真传,小 E 同学下定决心去拜访住在魔法森林中的隐 士.魔法森林可以被看成一个包含 n 个节点 m 条边的无向图,节点标号为 1,2,3,…,n,边标号为 1,2,3,…, ...

  8. [实例]JAVA调用微信接口发送图文消息,不用跳到详情页

    package com.test; import java.io.IOException; import java.io.InputStream; import java.io.OutputStrea ...

  9. 【Java】多线程初探

     参考书籍:<Java核心技术 卷Ⅰ >   Java的线程状态   从操作系统的角度看,线程有5种状态:创建, 就绪, 运行, 阻塞, 终止(结束).如下图所示     而Java定义的 ...

  10. AnnotationUtils

    /** * 查询类中符合指定annotation的属性信息 * @param objCls 实体类 * @param annCls 注解类 * @return HashMap<实体属性名, An ...