在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

      EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式Linux中如何進(jìn)行截屏?

      嵌入式Linux中如何進(jìn)行截屏?

      作者:ZLG致遠(yuǎn)電子 時(shí)間:2018-11-01 來(lái)源:電子產(chǎn)品世界 收藏

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

      本文引用地址:http://www.biyoush.com/article/201811/393735.htm

        1 . 原理

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

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

        顯然,這種原始數(shù)據(jù)無(wú)法通過(guò)簡(jiǎn)單的工具直接查看,特別是在精簡(jiǎn)的系統(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。(源碼包可從庫(kù)官網(wǎng)或論壇下載)

        圖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/得到交叉編譯過(guò)的庫(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例程,我們可以直接拿來(lái)修改使用。進(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

      評(píng)論


      相關(guān)推薦

      技術(shù)專區(qū)

      關(guān)閉