linux下的framebuffer显示图片
来源:互联网 发布:js全局变量数组 编辑:程序博客网 时间:2024/05/16 07:26
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显示图片
- Linux: Framebuffer显示bmp图片
- Linux framebuffer显示bmp图片
- Linux framebuffer显示bmp图片
- Linux framebuffer显示bmp图片
- Linux framebuffer显示bmp图片
- Linux framebuffer显示bmp图片
- linux framebuffer 显示bmp图片
- linux framebuffer 显示bmp图片
- Linux framebuffer显示bmp图片
- Linux framebuffer显示bmp图片
- Linux framebuffer显示bmp图片
- Linux framebuffer显示bmp图片
- Linux下提取bmp图片颜色信息生成fb文件并用framebuffer显示
- framebuffer显示JPEG图片
- framebuffer显示JPEG图片
- FrameBuffer 显示JPEG图片
- framebuffer显示JPEG图片
- JAVA线程
- NY--67 -- 三角形面积 [水] [几何]
- VIM高亮显示当前行只显示下划线的问题解决方案
- Sqlite判断字段存在
- android google map v1 v2 v3 参考
- linux下的framebuffer显示图片
- 选购好的主机和服务器可以有效提高优化效果
- 概率(4)--扑克牌
- 一位从业20年的程序员分享积累的20条编程经验
- java中.ArrayList和LinkedList区别
- 上传app store 应用指南---1
- HDU 1179 Ollivanders: Makers of Fine Wands since 382 BC. 二分匹配(简单)
- LaTex笔记
- ICTCLAS初步分词之原子分词