欢迎光临,嵌入式开源博客

Linux C framebuffer 显示图片

 

 

Linux C 显示一张图片,或者 位图,方法 不少,可以利用图形库,但我还是比较喜欢折腾 framebuffer,原理很简单,就是利用画像素点的原理.
图片无非就是 一个个像素点拼接在一起,所以说  我们只需要把 图片的每一个像素点打印到屏幕下就可以了。

Linux下应该有直接把 图片解码成像素点的 方法,这也是我下一步 想要研究的东西,之前我做linux下图形游戏的 东西,都是先用PS画出图形,然后利用Windows下图形取模工具,把每一个像素点的颜色信息存储到一个超大的数组里面。再linux下只需要把数组的颜色打印到屏幕即可:

下面举例 我做的贪吃蛇的蛇头如何显示的吧:

再Windows下PS设计蛇头

snake1   分辨率是40×40 的

利用Windows 下 Img2Lcd取模工具

QQ截图20131222142819

选择打开图片,输出灰度选择24位,这样的话,一个像素点由三个颜色拼接成

点击保存  生成一个文件,文件内容就是一个数组  const unsigned char gImage_snake1[4800]

数组大小 4800 ,4800 / 3 = 1600 ,因为是三个元素是一个像素点,所以这个数组是表示1600个像素点,因为分辨率是40×40 所以正好是1600

接下来就是拷贝文件到linux下,我们把它改成*.h头文件,这样程序可以直接引用啦。

剩下的就是写一个 显示图片的函数了,即使以后其他程序使用,直接复制过来即可!

 

void draw_tupian(int x,int y,int width,int lenth,const unsigned char *tu)
{
int i;
for(i=0;i<width*lenth;i++)
{
if(tu[i*3]*0x10000+tu[i*3+1]*0x100+tu[i*3+2]!=0xffffff)
p[(x+i/width)*Y+y+i%width]=tu[i*3+2]*0x10000+tu[i*3+1]*0x100+tu[i*3];
}
}

 

 

赞(0) 打赏
未经允许不得转载:Huangea Blog 嵌入式博客 » Linux C framebuffer 显示图片
分享到: 更多 (0)

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    这里的内容对我真的帮助很大。哈哈,多谢多谢。

    网站SEO查询3年前 (2014-12-26)回复

一个很有意思的网站

留言板友链

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏