在桌面级操作系统中,下载一个截图软件就能实现截屏操作,但在嵌入式Linux系统中,要实现小小的截图功能却没有那么简单。本文为您介绍嵌入式Linux系统中实现截屏功能的方法和步骤。

 

1 . 原理

 

由于 Linux 系统的 FrameBuffer 机制,会把屏幕上的每个点映射成一段线性内存空间,程序就可以通过改变这段内存的值来改变屏幕上某一点的颜色。屏幕色彩的原始数据保存在/dev/fb0文件内,因此我们可以直接cat /dev/fb0 > fb.raw读取该文件获得数据。

 

image.png

 图1  原始截屏数据

 

显然,这种原始数据无法通过简单的工具直接查看,特别是在精简的嵌入式Linux系统上。因此,我们找到了一个不错的工具——gsnap。这个工具可以将framebuffer中的数据直接保存为png或者jpeg格式的图片。当然,我们需要获得该工具的源码,并且在交叉编译后移植它。

 

2 . 原材料

 

本次尝试笔者选择周立功/致远电子开源开发套件EasyARM-i.MX283A3,宿主机选用Ubuntu14.04。首先,我们需要获取gsnap源码,该源码可在网络中搜索下载。源码解压后得到的文件如图2:

 

image.png

 2  gsnap源码

 

其中gsnap.c为解析算法,感兴趣的读者可以打开研究,本文我们不做分析。我们直接打开跟编译相关的Makefile文件,内容如下。从下图可知,该源码依赖libpng、libjpeg、zlib、libmath四种库。由于交叉编译器的库种包含有libmath,因此我们需要准备好另外三种库备用。

 

image.png

 图3  gsnap的Makefile

 

解压后得到的文件如图4。(源码包可从库官网或论坛下载)

 

image.png 

4  库的源码包解压

 

3 . 交叉编译

 

第一步,交叉编译libjpeg。进入到源码目录,执行./configure --host=arm-linux --prefix=/home/vmuser/gsnap/jpeg_install/,然后执行make、make install ,在安装目录/home/vmuser/gsnap/jpeg_install/得到交叉编译过的库。

 

image.png

 图5  交叉编译libjpeg

 

第二步,交叉编译zlib。由于zlib是libpng的依赖,因此必须首先编译zlib。由于zlib中的configure并未提供--host参数,因此需要为它手动指明交叉编译器:export CC=arm-fsl-linux-gnueabi-gcc,然后执行./configure --prefix=/home/vmuser/gsnap/z_install/,make、make install 。得到的文件类同第一步,不再放图。

 

第三步,交叉编译libpng。与上述两步骤又不同,libpng中提供有Linux平台下的Makefile例程,我们可以直接拿来修改使用。进入到libpng的源码目录,执行拷贝cp scripts/makefile.linux Makefile,然后打开Makefile修改,如图6。修改的内容为交叉编译器名称和依赖的zlib的路径。最后make、makeinstall得到头文件可库文件。

 

image.png

 6  修改libpng的Makefile

 

第四步,交叉编译gsnap。为方便起见,我们将上述得到的库文件和头文件分别集中拷贝到自行建立的lib和includes目录下,并且修改gsnap的Makefile。执行make后就能得到可执行文件gsnap。

 

image.png

 图7  修改gsnap的Makefile

 

4 . 验证

 

   将得到的gsnap可执行文件拷贝到目标板的/opt目录下,执行截屏命令:./gsnap  fb.jpg  /dev/fb0,将得到的截屏fb.jpg拷贝到ubuntu中可得图8。

 

image.png

 8  截屏得到的图片

 

 

 

 

 

 


关键字:Linux 引用地址:技术文章:嵌入式Linux中如何进行截屏?

上一篇:高性能、高能效,ARM全新CryptoCell安全IP缩短上市时间
下一篇:技术突破:基于三维芯片的光量子计算系统问市

推荐阅读

        新浪手机讯 11月1日上午消息,今日华为余承东在微博上感慨,六年的艰辛才有了华为消费者的成功,“困难时期走过来不易而未来更加挑战”。 六年前余承东接手华为消费者业务做出的调整          余承东在微博表示,一个同事发给他一张六年前的微博截图,思绪也将他带回六年前,上面记录着当时余承东接手华为消费者业务后做的7大...
10月30日获悉,国家电网有限公司跨区电网资产运营管理中心通过前期调研、制订方案、招标采购、现场决算复核等工作,对2014~2018年总部委托的5506项技改工程进行了逐项清理和复核,成效良好。 本次清理复核工作于今年年初启动,是落实国网财务部关于开展长期挂账在建工程清理专项行动工作要求的具体实践。工作的开展有助于夯实跨区电网有效资产管理基...
10月29日,第十五届“中国芯”集成电路产业促进大会的5G通信芯片论坛上,慧智微创始人兼CEO李阳以《可重构射频前端 助力5G大连接时代》为主题,剖析了5G浪潮下国产射频前端的发展机遇与挑战。“4G改变生活,5G改变社会。以往通信技术的进步是不断优化人与人的连接,但5G是面向物与物的连接,实现万物互联。”李阳强调,“随着通信技术推动应用升级,我们...
据韩国媒体消息,市场调查机构 UBIResearch 在 10 月 28 日的一份报告中预测,可折叠 OLED 面板的出货量将在 2021 年达到 890 万台。到 2025 年,可折叠 OLED 面板的出货量预计将达到 4900 万台,年均增长率达到 53%。  而市场研究公司 Omdia 的预测更加乐观。该公司认为,可折叠 OLED 面板出货量将从 2021 年的 10...

史海拾趣

问答坊 | AI 解惑

ModBus CRC校验码计算程序

ModBus CRC校验码计算程序…

查看全部问答∨

如何正确选用微波无线监控系统?

如何正确选用微波无线监控系统? 随着现代技术突飞猛进的发展,微波无线图像、语音传输系统被广泛应用于广播电视、公安消防、大型住宅区、停车场、重点保护区、库区及水下作业等场所。因其中间无需架设线缆,发射主机和接收机体积小,工作电流小 ...…

查看全部问答∨

bts4880r 功能

哪里可以找到这样的资料介绍啊,汉语版本…

查看全部问答∨

请求帮助

那位高手可以说一下计算机机与单片机之间的通讯原理?还有就是单片机的工作原理?谢谢了!…

查看全部问答∨

各位大侠,请给兄弟我指条明路吧.

在下,混杀在软件行业七年左右,以c/c++为主,多半在winnt/linux/solaris上做开发. 由于行业竟急日趋激烈,小弟我打算转行做硬件. 我给自已的定位是,操作系统,电子电路.这方面. 请问大家,我该如何学习.…

查看全部问答∨

AVR单片机控制直流伺服电机?【探讨帖】

  现在,我手头有一个直流伺服电机,自带一套直流伺服电机驱动器。   需要用AVR单片机制作电路,利用外部采集的信号,经处理后按照我们的思路和程序,控制该直流伺服电机驱动器。最终由驱动器控制直流伺服电机。    以往 ...…

查看全部问答∨

请教Flash擦写寿命计算的问题

flash的寿命是以擦的次数算,还是每次写入数据算作一次呢?因为page被擦除,掉电重新上电后未被写入的空间是允许写入的…

查看全部问答∨

WinCE6.0流驱动VirtualCopy映射失败

我在WinCE6.0下写流驱动用到VirtualAlloc与VirtualCopy函数,VirtualCopy运行出错了,GetLastError返回值为87,是参数错误,难道VirtualCopy在驱动里也不能用吗?请大虾指点一下!DWORD GPI_Init(LPCTSTR pContext){  DWORD GPIOSuccess=1;&nbs ...…

查看全部问答∨

德州仪器针对铅酸电池推出具有革命性突破的电池监测技术

TI 专有 Impedance Track™ 容量测量技术的铅酸电池管理电量监测计集成电路。该 bq34z110 电量监测计 IC 采用小型 14 引脚封装,是业界唯一一款可扩展电源管理器件,支持具有 4V、12V、24V、48V 以及更高电池电压的多串铅酸电池组。 ~采用 I ...…

查看全部问答∨

U-boot移植心得《二》

U-boot移植心得《二》 下面我开始分析start.S,在分析之前,我们要了解,u-boot引导linux加载的过程分为2个阶段,第一个阶段的终极目的就是设置好各种硬件环境,将代码从nor flash或NAND flash中拷贝到外部RAM中,然后跳转到C函数中去。第二阶段 ...…

查看全部问答∨
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved