音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

技術(shù)文章:嵌入式Linux中如何進(jìn)行截屏?

出處:EEWORLD 發(fā)布于:2018-11-02 14:43:59

  在桌面級(jí)操作系統(tǒng)中,一個(gè)截圖軟件就能實(shí)現(xiàn)截屏操作,但在嵌入式Linux系統(tǒng)中,要實(shí)現(xiàn)小小的截圖功能卻沒有那么簡(jiǎn)單。本文為您介紹嵌入式Linux系統(tǒng)中實(shí)現(xiàn)截屏功能的方法和步驟。

  1 . 原理

  由于 Linux 系統(tǒng)的 FrameBuffer 機(jī)制,會(huì)把屏幕上的每個(gè)點(diǎn)映射成一段線性內(nèi)存空間,程序就可以通過改變這段內(nèi)存的值來改變屏幕上某一點(diǎn)的顏色。屏幕色彩的原始數(shù)據(jù)保存在/dev/fb0文件內(nèi),因此我們可以直接cat /dev/fb0 > fb.raw讀取該文件獲得數(shù)據(jù)。

 

 

  圖1  原始截屏數(shù)據(jù)

  顯然,這種原始數(shù)據(jù)無法通過簡(jiǎn)單的工具直接查看,特別是在精簡(jiǎn)的嵌入式Linux系統(tǒng)上。因此,我們找到了一個(gè)不錯(cuò)的工具——gsnap。這個(gè)工具可以將framebuffer中的數(shù)據(jù)直接保存為png或者jpeg格式的圖片。當(dāng)然,我們需要獲得該工具的源碼,并且在交叉編譯后移植它。

  2 . 原材料

  本次嘗試筆者選擇周立功/致遠(yuǎn)電子開源開發(fā)套件EasyARM-i.MX283A3,宿主機(jī)選用Ubuntu14.04。首先,我們需要獲取gsnap源碼,該源碼可在網(wǎng)絡(luò)中搜索。源碼解壓后得到的文件如圖2:

 

  圖2  gsnap源碼

  其中g(shù)snap.c為解析算法,感興趣的讀者可以打開研究,本文我們不做分析。我們直接打開跟編譯相關(guān)的makefile文件,內(nèi)容如下。從下圖可知,該源碼依賴libpng、libjpeg、zlib、libmath四種庫(kù)。由于交叉編譯器的庫(kù)種包含有l(wèi)ibmath,因此我們需要準(zhǔn)備好另外三種庫(kù)備用。

 

 

  圖3  gsnap的Makefile

  解壓后得到的文件如圖4。

 

  圖4  庫(kù)的源碼包解壓

  3 . 交叉編譯

  步,交叉編譯libjpeg。進(jìn)入到源碼目錄,執(zhí)行./configure --host=arm-linux --prefix=/home/vmuser/gsnap/jpeg_install/,然后執(zhí)行make、make install ,在安裝目錄/home/vmuser/gsnap/jpeg_install/得到交叉編譯過的庫(kù)。

 

 

  圖5  交叉編譯libjpeg

  第二步,交叉編譯zlib。由于zlib是libpng的依賴,因此必須首先編譯zlib。由于zlib中的configure并未提供--host參數(shù),因此需要為它手動(dòng)指明交叉編譯器:export CC=arm-fsl-linux-gnueabi-gcc,然后執(zhí)行./configure --prefix=/home/vmuser/gsnap/z_install/,make、make install 。得到的文件類同步,不再放圖。

  第三步,交叉編譯libpng。與上述兩步驟又不同,libpng中提供有Linux平臺(tái)下的Makefile例程,我們可以直接拿來修改使用。進(jìn)入到libpng的源碼目錄,執(zhí)行拷貝cp scripts/makefile.linux Makefile,然后打開Makefile修改,如圖6。修改的內(nèi)容為交叉編譯器名稱和依賴的zlib的路徑。make、makeinstall得到頭文件可庫(kù)文件。

 

 

  圖6  修改libpng的Makefile

  第四步,交叉編譯gsnap。為方便起見,我們將上述得到的庫(kù)文件和頭文件分別集中拷貝到自行建立的lib和includes目錄下,并且修改gsnap的Makefile。執(zhí)行make后就能得到可執(zhí)行文件gsnap。

 

 

  圖7  修改gsnap的Makefile

  4 . 驗(yàn)證

  將得到的gsnap可執(zhí)行文件拷貝到目標(biāo)板的/opt目錄下,執(zhí)行截屏命令:./gsnap  fb.jpg  /dev/fb0,將得到的截屏fb.jpg拷貝到ubuntu中可得圖8。

 

 

      圖8  截屏得到的圖片

 

 

 

 

 

 

關(guān)鍵詞:Linux

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

全志代理A50板 安卓9.0 Linux QT 代A33 高清視頻方案
廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫(kù)提出的寶貴意見,您的參與是維庫(kù)提升服務(wù)的動(dòng)力!意見一經(jīng)采納,將有感恩紅包奉上哦!