python将图片转换为Framebuffer裸数据格式(终端显示图片)
要在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 32timings 0 0 0 0 0 0 0accel truergba 8/16,8/8,8/0,0/0 endmodeFrame buffer device information:Name : inteldrmfbAddress : 0xc0000000Size : 4227072Type : PACKED PIXELSVisual : TRUECOLORXPanStep : 1YPanStep : 1YWrapStep : 0LineLength : 5504Accelerator : 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
转载于:https://www.cnblogs.com/zqb-all/p/6107905.html
python将图片转换为Framebuffer裸数据格式(终端显示图片)相关推荐
- python图片保存和图片展示顺序_【IT专家】【 python 】 —— 数据预处理:(1) 读取与显示图片 + 图像通道顺序变换...
本文由我司收集整编,推荐下载,如有疑问,请与我司联系 [ python ] -- 数据预处理: (1) 读取与显示图片 + 图像通道顺 序变换 2018/05/31 29 # ---- 用 OPENC ...
- 富文本编辑的图片在手机,移动端显示图片img太大,超出屏幕,出现滚动条,富文本中的图片如何修改样式
富文本编辑的图片在手机,移动端显示图片太大,超出屏幕,出现滚动条,富文本中的图片如何修改样式 var html = res.data.details.replace(/<img([\s\w&qu ...
- linux 命令行看图片,骚操作:用终端打开图片
导读 Linux 上有许多 GUI 图片浏览器.但我尚未听说或使用过任何在终端中显示图片的应用程序.幸运的是,我刚刚发现了一个可用于在终端中显示图像的名叫 FIM 的图像查看器.FIM 引起了我的注意 ...
- python 学习系列(3) 读取并显示图片的两种方法
python 读取并显示图片的两种方法 在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片.本人偏爱 matpoltlib,因为它的语法更像 mat ...
- python,pytorch:读取,保存,显示图片
文章目录 一,Pytorch 1. 直接保存Tensor 2.Tensor 转CV2 保存 二.python 1. opencv 2.matplotlib: 3. PIL 一,Pytorch 1. 直 ...
- 电脑打开html不显示图片,网页不显示图片,详细教您网页不显示图片怎么解决
在使用电脑浏览网页的时候是不是有碰到过网页不显示图片的时候呢?有的时候可能是因为电脑网速慢.所以加载图片不成功!而有的时候是因为有些地方需要设置.那网页不显示图片怎么解决?下面,小编跟大家介绍网页不显 ...
- html悬停显示图片,JS实现悬停单元格显示图片
2.1 准备模板 1)准备内置模板: %FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\DynamicCol\函数实现动态列.cpt 打开模板,模板 ...
- Github的README中插入图片,Github仓库项目主页显示图片
Github仓库主页的 README.md 支持 MarkDown 文本,也支持图片显示.显示图片需要提供<img>标签,这个链接可以位于其他服务器上,也可以是GitHub自身的仓库文件. ...
- 在图片控件中应用win32显示图片总结
先贴出来在mfc环境下实现的代码: void CShowBmpInDlgDlg::ShowBmpInStaic() { CBitmap hbmp; HBITMAP hbitmap; //将pStati ...
最新文章
- 多重比对序列的格式及其应用
- Windows下SonarQube与Jenkins环境的配置使用
- 计算机网络多媒体图像矢量图,13多媒体信息处理——图像处理(一)
- 7.Hadoop的学习(Hadoop的配置(伪分布式的搭建)-3(启动守护进程))
- iOS之深入解析预乘透明度Premultiplied Alpha
- play框架入门操作
- [nodejs][html5][css3][js] 个人网站上线
- 【读书笔记】—— 《马克思恩克斯全集》
- 对类HelloWorld程序中添加一个MessageBox弹窗
- Ubuntu18.04安装wireshark3.0.6(版本可自己选)
- 剑指_5替换空格(Python)
- OSChina 周四乱弹 —— 你从小继承了程序员基因
- js对加法计算、减法计算、乘法计算、除法计算的精度处理
- wsl连接vscode
- Monotonic Matrix(lemma定理)
- NO_DATA_FOUND和%NOTFOUND的区别
- 亚马逊家居行业中办公室家具市场前景分析及货源分享
- BUCTOJ周赛(5)问题 E: 数学(线性DP+LCS)
- SpEL之#和$的区别
- python我的爬虫笔记
热门文章
- Win1远程出现“这可能是由于credssp加密oracle修正”解决办法
- JAVA多线程-CountDownLatch计数器
- Spring boot 通过ApplicationRunner在启动完成后按指定顺序执行任务
- Android开发笔记(一百四十四)高仿支付宝的头部伸缩动画
- html的article标签,介绍一个html5做的网站,以及article标签的用法
- 关于组装电脑装win10不得不说的小故事
- 疯狂的双十一也难挡股价的下跌,电商平台难道真的进入了瓶颈期?
- Downloading SRA data using command line utilities
- Linux常用命令大全(归类)
- 4星|《疯狂的独角兽》:离职员工披露上市公司负面资料,以为是小说,搜索后发现是真事。...