要在ubuntu终端显示图片或者在板子的LCD显示图片,Framebuffer是一个简单易用的接口,直接写入像素信息即可。

但普通的图片带有头部信息或者编码格式不同,直接送入Framebuffer是显示不出来的,需要扣出像素信息,并按照Framebuffer的RGBA顺序调整好,才能显示。所以现在的问题就是,如何获取framebuffer的信息,以及如何调整图片。

第一个问题,如何获取framebuffer的信息

对于ubuntu,可以安装fbset 进行查看

sudo apt-get install fbset

安装完毕后,运行

sudo fbset -i

可以查看framebuffer的信息,默认是/dev/fb0

在我的笔记本上输出是的

mode "1366x768"
geometry 1366 768 1366 768 32
timings 0 0 0 0 0 0 0
accel true
rgba 8/16,8/8,8/0,0/0
endmode Frame buffer device information:
Name : inteldrmfb
Address : 0xc0000000
Size : 4227072
Type : PACKED PIXELS
Visual : TRUECOLOR
XPanStep : 1
YPanStep : 1
YWrapStep : 0
LineLength : 5504
Accelerator : No

可以看出屏幕是1366x768,但这里有个地方要注意,看这个参数,LineLength : 5504,一个像素点用四个字节表示的话,5505/4=1376,所以屏幕是1366x768,但实际上framebuffer的大小为1376x768。最开始这个没注意,显示的图片就乱了,搞半天才发现。

至于颜色,这里写的是 rgba 8/16,8/8,8/0,0/0 ,但实际测试的颜色顺序为bgra,暂时不知道为什么,不过这个试试就能知道实际的顺序。

第二个问题,如何调整图片

简单讲,就是扣出像素信息,并调整好RGBA的顺序,当然还要注意framebuffer跟图片大小不同时,要补0或截断。

用C写就比较麻烦,要知道图片编码格式的细节,网上有不少文章和代码,之前就是为了显示图片才了解了framebuffer,看这篇文章,后来弄了个python版本,有库就是好,没几行代码就搞完了,到github搜了下,似乎没有类似的工具,于是干脆完善下,代码已经上传到github,https://github.com/zqb-all/convertfb,第一次开源好吧,求star

要先安装PIL

sudo apt-get install python-imaging

目前提供了五个参数,

-i  输入图片

-o 输出文件

-bw Framebuffer的宽度

-bh Framebuffer的高度

-f 格式,也就是‘R’'G''B''A'四个字母,组合成三个字母的字符串或四个字母的字符串,按照实际来,也就是RGB,BGR,ARGB,BGRA等等都行

举个例子,对于我的笔记本,可以这么用,准备好一张图片,假设叫zqb-all.bmp

./convertfb -i zqb-all.bmp -o zqb-all.fb -bw 1376 -bh 768 -f BGRA

生成zqb-all.fb,然后直接丢进去即可

sudo cat zqb-all.fb > /dev/fb0

什么,看不到,当然看不到,要切换到终端1去看

按住Ctrl + Alt + F1

输入用户名和密码登陆,重新执行刚刚的cat操作,即可。

本文地址:http://www.cnblogs.com/zqb-all/p/6107905.html

python将图片转换为Framebuffer裸数据格式(终端显示图片)的更多相关文章

  1. python将图片转换为Framebuffer裸数据格式(终端显示图片)【转】

    转自:https://www.cnblogs.com/zqb-all/p/6107905.html 要在ubuntu终端显示图片或者在板子的LCD显示图片,Framebuffer是一个简单易用的接口, ...

  2. IE浏览器中图片路径正确< img ... />标签不显示图片

    如下图所示,下面的html要去加载上面的jpg图片: 代码如下: <img src="luzhanshi1.jpg" alt="图片加载失败"> 使 ...

  3. 利用framebuffer,命令行显示图片

    上代码 import fcntl import struct import mmap import contextlib import os import time import numpy as n ...

  4. 用python简单处理图片(1):打开\显示\保存图像

    一提到数字图像处理,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因此, ...

  5. [Android] 给图像加入相框、圆形圆角显示图片、图像合成知识

        前一篇文章讲述了Android触屏setOnTouchListener实现突破缩放.移动.绘制和加入水印,继续我的"随手拍"项目完毕给图片加入相框.圆形圆角显示图片和图像合 ...

  6. django上传并显示图片

    环境 python 3.5 django 1.10.6 步骤 创建名为 testupload的项目 django-admin startproject testupload 在项目testupload ...

  7. IOS开发-UI学习-根据URL显示图片,下载图片的练习(button,textfield,image view,url,data)

    编写一个如下界面,实现: 1.在文本输入框中输入一个网址,然后点击显示图片,图片显示到UIImageView中. 2.点击下载,这张显示的图片被下载到手机的Documents文件夹下的Dowmload ...

  8. wpf图片浏览器,实现缩放平移操作图片切换等功能

    wpf经常要用到控件来查看图片,尤其是高清图片,于是做了一个例子: 1.定义图片的队列,用list来存. private readonly List<string> files; 2.切换 ...

  9. jquery 显示图片

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

随机推荐

  1. fibonacci数列(五种)

    自己没动脑子,大部分内容转自:http://www.jb51.net/article/37286.htm 斐波拉契数列,看起来好像谁都会写,不过它写的方式却有好多种,不管用不用的上,先留下来再说. 1 ...

  2. 存储过程 Row_number() 分页

    ---恢复内容开始--- 自己之前一直是使用的通用的存储过程 ,也是封装好的只要传表名 + 条件 等等 来到新环境 让自己写一个存储过程, 没办法 自己就需要写一个咯 之前写的比较多的是 按 top ...

  3. java 标签库(核心,xml,sql ,国际化,函数)

    java标签库分分为上述几种,一般经常使用的是核心和函数,接下来会分别讲解这几种,和常见的用法. 一般标签库会和el表达式一起使用,所以在学习标签库前最后也学习下el表达式的使用. 导入后展开 可以从 ...

  4. php中通过DOM操作XML

    DOM文档在js里早就接触过,知道DOM不但可以操作html文档,还可以操作XHTML,XML等文档,有着极强的通用性,下面我们通过两个小例子,看看在PHP中是如何用DOM操作XML文档的,和js中差 ...

  5. Linux IPTABLES端口转发

    之前在Linux上用普通用户部署了一个Tomcat,然后将其server.xml中的端口配置为80端口,用普通用户运行就提示绑定端口失败(permission denied),google了一下,原来 ...

  6. Redis 慢速入门(一)

    网上关于redis的入门文章其实已经很多了,这里仅仅以作者特独的视角来学习下redis相关的基础概念. 一切的基础 需要分清楚3个重要的概念,key,type,value. 这里的key为hello, ...

  7. 深信服务发布SSL站点

    1.不能使用AD自带的HTTPS服务,需要新建一个服务,端口443 2.在“节点池”中添加内网HTTPS服务器的IP,端口443 3.在“策略”中新建一条策略,"服务"选新添加的端 ...

  8. 安装zeppelin

    安装zeppelin 1.默认安装好spark集群 2.安装zeppelin 1.解压安装包 tar zxvf zeppelin-0.5.5-incubating-bin-all.tgz 2.配置环境 ...

  9. PDA手持终端扫描条码开单打印一体 结合后台电脑系统 数据同步交互解决方案

    PDA通过扫描商品条码移动开单,实现便携式办公,伴随式销售,PDA能通过WIFI无线局域网.GPRS互联网直接与主机连接,让公司业务人员能随时随地了解公司产品信息,直接扫描商品条码,进行开单.入库.库 ...

  10. TAQSkinScrollBar 类美化滚动条再讨论

    再说:TAQSkinScrollBar 类美化滚动条,http://www.138soft.com/?p=156  里面有人提到不可以滚动 滚动的改善方法: unit AQSkinScrollBar; ...