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. 完全卸载SQL Server 2008r2

    完全卸载SQL Server 2008r2   "五一"时进行了系统重装,在没有卸载SQL Server 2008情况下尝试安装SQL Server 2008r2 ,安装提示成功但 ...

  2. python绘制图形(Turtle模块)

    用python的Turtle模块可以绘制很多精美的图形,下面简单介绍一下使用方法. 需要用到的工具有python,python 的安装这里就不再细说.自行搜索. from turtle import ...

  3. MySQL笔记-语句的执行顺序

    在一次查询线上问题时发现有以下两条同样的SQL,执行后数据的顺序不一样: SELECT * FROM nns_assists_item AS asset WHERE asset.nns_assist_ ...

  4. 自兴人工智能------Python语言的变量认识及操作

    今天我给大家介绍的是python中的Number变量,与c++,java有些不同,下面让来为大家介绍: 在python中是不用声明变量类型的,不过在使用变量前需要对其赋值,没有值得变量是没有意义的,编 ...

  5. dos2unix和unix2dos

    dos2unix将windows格式的文件转换为linux格式的文件. unix2dos将linux格式的文件转换为windows格式的文件. dos2unix和unix2dos会转换windows和 ...

  6. 模板方法模式和JDBCTemplate(一)

    本篇博客的目录: 一:模板方法模式介绍 二:模板方法模式的简单实现 三:总结 一:模板方法模式的介绍 1.1:模板方法模式的定义 定义:一个操作中的算法的骨架,而将一些步骤延迟到子类中.Templat ...

  7. iOS "此证书由未知颁发机构签名"此问题的解决方法

    前段时间制作证书时把以前钥匙串中的证书全删除了,然后在制作新证书的时候就出现了"此证书由未知颁发机构签名"的红色警告,通过查找资料发现出现此问题的原因是:我把钥匙串中的此证书给删除 ...

  8. 洛谷 P2194 HXY烧情侣【Tarjan缩点】 分析+题解代码

    洛谷 P2194 HXY烧情侣[Tarjan缩点] 分析+题解代码 题目描述: 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里 ...

  9. 奥酷HTML5视频直播系统AMS6.0

    今日,北极星通自主研发的流媒体服务系统Aoku Media Server6.0发布了,将正式支持HTML5直播,这使得网页中无需有flash播放插件或者其他插件,可直接观看直播,HTML5直播也会使得 ...

  10. JDK1.7源码分析01-Collection

    同步发布:http://www.yuanrengu.com/index.php/20180221.html Java的集合类主要由两个接口派生而出:Collection和Map.Collection是 ...