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

姓名:閔聿寬

學(xué)號(hào):16020188028

轉(zhuǎn)自:http://www.eeworld.com.cn/qrs/2018/ic-news110151973.html

【嵌牛導(dǎo)讀】Linux是我們嵌入式學(xué)習(xí)中的常用系統(tǒng),下面介紹了Linux中一種截屏的方法

【嵌牛鼻子】截屏技術(shù)

【嵌牛提問(wèn)】Linux中如何截屏昵仅?

【嵌牛正文】

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


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)的嵌入式Linux系統(tǒng)上尔许。因此,我們找到了一個(gè)不錯(cuò)的工具——gsnap终娃。這個(gè)工具可以將framebuffer中的數(shù)據(jù)直接保存為png或者jpeg格式的圖片味廊。當(dāng)然,我們需要獲得該工具的源碼,并且在交叉編譯后移植它毡们。


2 . 原材料


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


?圖2? gsnap源碼


其中g(shù)snap.c為解析算法红氯,感興趣的讀者可以打開(kāi)研究,本文我們不做分析咕痛。我們直接打開(kāi)跟編譯相關(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 。得到的文件類(lèi)同第一步谱姓,不再放圖借尿。


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


?圖6? 修改libpng的Makefile


第四步恢共,交叉編譯gsnap。為方便起見(jiàn)璧亚,我們將上述得到的庫(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? 截屏得到的圖片

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蹬铺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子秉撇,更是在濱河造成了極大的恐慌甜攀,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件琐馆,死亡現(xiàn)場(chǎng)離奇詭異规阀,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)瘦麸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)谁撼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人滋饲,你說(shuō)我怎么就攤上這事厉碟。” “怎么了屠缭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵箍鼓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我呵曹,道長(zhǎng)款咖,這世上最難降的妖魔是什么何暮? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮铐殃,結(jié)果婚禮上海洼,老公的妹妹穿的比我還像新娘。我一直安慰自己富腊,他們只是感情好坏逢,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蟹肘,像睡著了一般词疼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上帘腹,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音许饿,去河邊找鬼阳欲。 笑死,一個(gè)胖子當(dāng)著我的面吹牛陋率,可吹牛的內(nèi)容都是我干的球化。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼瓦糟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼筒愚!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起菩浙,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤巢掺,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后劲蜻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體陆淀,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年先嬉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了轧苫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡疫蔓,死狀恐怖含懊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情衅胀,我是刑警寧澤岔乔,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站拗小,受9級(jí)特大地震影響重罪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一剿配、第九天 我趴在偏房一處隱蔽的房頂上張望搅幅。 院中可真熱鬧,春花似錦呼胚、人聲如沸茄唐。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)沪编。三九已至,卻和暖如春年扩,著一層夾襖步出監(jiān)牢的瞬間蚁廓,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工厨幻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留相嵌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓况脆,卻偏偏與公主長(zhǎng)得像饭宾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子格了,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容