嵌入式 Linux 系统如何实现截屏功能?详细步骤与原理介绍

阿涛君_5342

阿涛君_5342

2024-06-02

1978人浏览

转载

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

1.原理

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

3d35ea19b197de14a33211a1bc406eca.png

图1原始截屏数据

其实,这些原始数据难以通过简单的工具直接查看,非常是在精简的嵌入式Linux系统上。为此,我们找到了一个不错的工具——gsnap。这个工具可以将framebuffer中的数据直接保存为png或则jpeg格式的图片。其实,我们须要获得该工具的源码,但是在交叉编译后移植它。

2.原材料

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

图2gsnap源码

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

软件截屏限制怎么破解_linux截屏软件_软件截屏快捷键

dc0ac023ed1808531bb2060e7bf0467e.png

图3gsnap的Makefile

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

aa5c1b605f4f4a6f98dac8306225ea12.png

图4库的源码包解压

软件截屏快捷键_软件截屏限制怎么破解_linux截屏软件

3.交叉编译

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

288b6392753aa1c56e9690f99893a1f2.png

图5交叉编译libjpeg

第二步,交叉编译zlib。因为zlib是libpng的依赖,因而必须首先编译zlib。因为zlib中的configure并未提供--host参数,因而须要为它自动指明交叉编译器:exportCC=arm-fsl-linux-gnueabi-gcc,之后执行./configure--

linux截屏软件_软件截屏限制怎么破解_软件截屏快捷键

prefix=/home/vmuser/gsnap/z_install/,make、makeinstall。得到的文件类同第一步,不再放图。

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

1368b214259854dd8f52ef4b49dfa9dd.png

图6更改libpng的Makefile

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

软件截屏快捷键_linux截屏软件_软件截屏限制怎么破解

6a1c6994006878aec886ba9e6e3bbd38.png

图7更改gsnap的Makefile

4.验证

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

56fbb58a452bc37acce671331a27fc36.png

图8截屏得到的图片

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux file类

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

2023.08.14

6516

4

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4350

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3653

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2913

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

7190

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6822

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3913

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3405

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3639

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习