linux下的framebuffer显示图片 分类: arm-linu...

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 ;
 }

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/mao0504/p/4706850.html

(base) dwh@dwh:~$ dpkg -l | grep -i nvidia ii libnvidia-cfg1-470:amd64 470.256.02-0ubuntu0.20.04.1 amd64 NVIDIA binary OpenGL/GLX configuration library ii libnvidia-common-470 470.256.02-0ubuntu0.20.04.1 all Shared files used by the NVIDIA libraries ii libnvidia-compute-470:amd64 470.256.02-0ubuntu0.20.04.1 amd64 NVIDIA libcompute package ii libnvidia-compute-470:i386 470.256.02-0ubuntu0.20.04.1 i386 NVIDIA libcompute package rc libnvidia-compute-535:amd64 535.183.01-0ubuntu0.20.04.1 amd64 NVIDIA libcompute package ii libnvidia-decode-470:amd64 470.256.02-0ubuntu0.20.04.1 amd64 NVIDIA Video Decoding runtime libraries ii libnvidia-decode-470:i386 470.256.02-0ubuntu0.20.04.1 i386 NVIDIA Video Decoding runtime libraries ii libnvidia-encode-470:amd64 470.256.02-0ubuntu0.20.04.1 amd64 NVENC Video Encoding runtime library ii libnvidia-encode-470:i386 470.256.02-0ubuntu0.20.04.1 i386 NVENC Video Encoding runtime library ii libnvidia-extra-470:amd64 470.256.02-0ubuntu0.20.04.1 amd64 Extra libraries for the NVIDIA driver ii libnvidia-fbc1-470:amd64 470.256.02-0ubuntu0.20.04.1 amd64 NVIDIA OpenGL-based Framebuffer Capture runtime library ii libnvidia-fbc1-470:i386 470.256.02-0ubuntu0.20.04.1 i386 NVIDIA OpenGL-based Framebuffer Capture runtime library ii libnvidia-gl-470:amd64 470.256.02-0ubuntu0.20.04.1 amd64 NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD ii libnvidia-gl-470:i386 470.256.02-0ubuntu0.20.04.1 i386 NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD ii libnvidia-ifr1-470:amd64 470.256.02-0ubuntu0.20.04.1 amd64 NVIDIA OpenGL-based Inband Frame Readback runtime library ii libnvidia-ifr1-470:i386 470.256.02-0ubuntu0.20.04.1 i386 NVIDIA OpenGL-based Inband Frame Readback runtime library ii nvidia-compute-utils-470 470.256.02-0ubuntu0.20.04.1 amd64 NVIDIA compute utilities rc nvidia-compute-utils-535 535.183.01-0ubuntu0.20.04.1 amd64 NVIDIA compute utilities ii nvidia-dkms-470 470.256.02-0ubuntu0.20.04.1 amd64 NVIDIA DKMS package rc nvidia-dkms-535 535.183.01-0ubuntu0.20.04.1 amd64 NVIDIA DKMS package ii nvidia-driver-470 470.256.02-0ubuntu0.20.04.1 amd64 NVIDIA driver metapackage ii nvidia-kernel-common-470 470.256.02-0ubuntu0.20.04.1 amd64 Shared files used with the kernel module rc nvidia-kernel-common-535 535.183.01-0ubuntu0.20.04.1 amd64 Shared files used with the kernel module ii nvidia-kernel-source-470 470.256.02-0ubuntu0.20.04.1 amd64 NVIDIA kernel source package ii nvidia-prime 0.8.16~0.20.04.2 all Tools to enable NVIDIA's Prime ii nvidia-settings 470.57.01-0ubuntu0.20.04.3 amd64 Tool for configuring the NVIDIA graphics driver ii nvidia-utils-470 470.256.02-0ubuntu0.20.04.1 amd64 NVIDIA driver support binaries ii screen-resolution-extra 0.18build1 all Extension for the nvidia-settings control panel ii xserver-xorg-video-nvidia-470 470.256.02-0ubuntu0.20.04.1 amd64 NVIDIA binary Xorg driver
最新发布
04-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值