亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android模擬器中窗口截圖存成文件實現思路及代碼

2020-04-11 12:32:48
字體:
來源:轉載
供稿:網友

Android模擬器內容是用OpenGL渲染的,所以用一般的編程截圖(如PrintWindow()等)會是黑屏。這是因為畫的東西放在framebuffer里。

一種方法是通過adb把guest的framebuffer數據/dev/graphics/fb0倒到host,再轉為圖片。但這樣速度比較慢。

好在Android模擬器中把guest的framebuffer傳到host進行顯示,所以在host端只要將framebuffer輸出到文件即可。

首先定義每次framebuffer更新時的回調函數

復制代碼 代碼如下:

void zjin_fb_update(void* context,
int w, int h, int ydir,
int format, int type,
unsigned char* pixels)
{
#define CHANNEL 4
BITMAPFILEHEADER bf;
BITMAPINFOHEADER bi;
int width = w;
int height = h;
FILE *file = fopen("capture.bmp", "wb");
if( file!=NULL )
{
memset( &bf, 0, sizeof( bf ) );
memset( &bi, 0, sizeof( bi ) );
bf.bfType = 'MB';//BM?
bf.bfSize = sizeof(bf)+sizeof(bi)+width*height*CHANNEL;
bf.bfOffBits = sizeof(bf)+sizeof(bi);
bi.biSize = sizeof(bi);
bi.biWidth = width;
bi.biHeight = height;
bi.biPlanes = 1;
bi.biBitCount = 8 * CHANNEL;
bi.biSizeImage = width*height*CHANNEL;
fwrite( &bf, sizeof(bf), 1, file );
fwrite( &bi, sizeof(bi), 1, file );
fwrite( pixels, sizeof(unsigned char), height*width*CHANNEL, file );
fclose( file );
}
return;
}

然后把這個回調函數注冊上去,比如在OpenGL窗口顯示之后:
復制代碼 代碼如下:

android_showOpenglesWindow(winhandle, drect.pos.x, drect.pos.y,
drect.size.w, drect.size.h, disp->rotation * -90.);
android_setPostCallback(zjin_fb_update, NULL);

這樣,每次有framebuffer的更新時,guest的屏幕都會存成一張bmp圖片,這和用/dev/graphics/fb0的效果是一樣的。

注意用以上方法截下來的圖和原圖有兩點不同,一是Blue和Red通道互換,這是因為framebuffer是RGB,bmp格式里是BGR。還有就是y軸的零點是左下角,這是由于framebuffer中是OpenGL的坐標系。也就是說,要得到原圖還要經過RGB到BGR的轉換和y-inversion。建議到處理圖片時再做這些處理,一方面不會拖慢模擬器速度,另一方面像OpenCV里有現成的函數可供調用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产色婷婷国产综合在线理论片a| 中文字幕在线视频日韩| 北条麻妃一区二区三区中文字幕| 国产一区二区三区视频在线观看| 中国china体内裑精亚洲片| 日韩欧美黄色动漫| 久久精品久久久久久国产 免费| 亚洲免费精彩视频| 欧美电影在线观看完整版| 亚洲精品国产美女| 日韩中文在线中文网在线观看| 亚洲欧美综合v| 欧美理论片在线观看| 国产精品久久久久久久app| 正在播放欧美一区| 日本国产精品视频| 亚洲欧美一区二区三区情侣bbw| 欧美精品久久久久a| 欧美激情精品在线| 欧美与欧洲交xxxx免费观看| 91精品国产成人www| 久久久999成人| 亚洲欧美日韩精品| 国产精品永久免费观看| 久久精品成人动漫| 国产成人aa精品一区在线播放| 97热在线精品视频在线观看| 狠狠色狠狠色综合日日五| 久久九九热免费视频| 久久久久久成人精品| 粉嫩av一区二区三区免费野| 亚洲区一区二区| 国产+成+人+亚洲欧洲| 国产精品久久综合av爱欲tv| 中文字幕少妇一区二区三区| 色樱桃影院亚洲精品影院| 成人福利在线视频| 精品久久久久久久久久久久久| 欧美性猛交xxxxx水多| 欧美一区深夜视频| 久久精品一偷一偷国产| 高潮白浆女日韩av免费看| 欧美自拍大量在线观看| 日韩中文字幕在线看| 亚洲色图日韩av| www.国产精品一二区| 国产成人精品国内自产拍免费看| 亚洲国产欧美日韩精品| 日韩av理论片| 日韩电影免费观看中文字幕| 欧洲成人性视频| 亚洲天堂男人天堂女人天堂| 国语自产在线不卡| 精品人伦一区二区三区蜜桃网站| 国产精品欧美激情在线播放| 国产精品v日韩精品| 国产日产欧美精品| 亚洲人在线观看| 欧美一级在线亚洲天堂| 成人国产亚洲精品a区天堂华泰| 久久国产精品久久久久久久久久| 欧美性猛交xxxx免费看| 国自在线精品视频| 日韩av在线免费看| 亚洲最大成人在线| 日韩电影在线观看免费| 久久久久北条麻妃免费看| 亚洲色图13p| 久久久久日韩精品久久久男男| 国产精品久久久久久婷婷天堂| 欧美xxxx综合视频| 亚洲女人初尝黑人巨大| 久久91亚洲人成电影网站| 欧美激情视频网站| 91免费在线视频网站| 欧美第一页在线| 97视频在线观看视频免费视频| 91在线观看免费高清完整版在线观看| 亚洲人成电影在线播放| 在线电影中文日韩| 成人xxxx视频| 91精品视频在线| 岛国av一区二区三区| 亚洲人成电影在线| 国产精品777| 中文字幕精品一区久久久久| 国产成人91久久精品| 国产丝袜一区二区| 色婷婷成人综合| 国产91精品久久久久久| 91精品啪在线观看麻豆免费| 久久久精品999| 欧美日韩精品国产| 久久综合伊人77777尤物| 亚洲国产欧美在线成人app| 久久伊人精品视频| 亚洲精品福利资源站| 欧美又大粗又爽又黄大片视频| 欧美日韩在线另类| 日韩av片永久免费网站| 国产中文欧美精品| 欧美激情精品在线| 久久精品国产亚洲精品2020| 久久在线精品视频| 九九热精品视频在线播放| 高清一区二区三区日本久| 91香蕉国产在线观看| 亚洲精品日韩丝袜精品| 成人中文字幕在线观看| 国产美女扒开尿口久久久| 中文字幕日韩高清| 日韩欧美成人精品| 久久精品欧美视频| 九九热这里只有精品免费看| 91久久精品久久国产性色也91| 久久在线视频在线| 91精品国产成人www| 国产精品电影网| 日韩中文字幕网| 2019av中文字幕| 国产专区精品视频| 国产视频精品一区二区三区| 韩国美女主播一区| 黑人狂躁日本妞一区二区三区| 欧美视频在线观看免费网址| 成人精品久久一区二区三区| 欧美高清视频在线观看| 亚洲国产成人精品一区二区| 国产精品欧美在线| 亚洲国产成人精品女人久久久| 欧美成人午夜激情视频| 亚洲精品成人久久电影| 亚洲欧洲偷拍精品| 欧美福利小视频| www.xxxx欧美| 中文字幕国产日韩| 国产色视频一区| 国内揄拍国内精品少妇国语| 亚洲美女视频网| 国产成人一区二区三区小说| 97人人做人人爱| 91亚洲精品在线| 亚洲综合成人婷婷小说| 欧美成人sm免费视频| 国产精品视频大全| 18性欧美xxxⅹ性满足| 亚洲男人的天堂网站| 欧美日韩亚洲视频| 亚洲欧美综合区自拍另类| 国产精品久久久久久久久免费看| 欧美黑人视频一区| 欧美中文字幕视频| 日韩一区二区三区国产| 91九色在线视频| 久久黄色av网站| 国产美女搞久久| 精品国内亚洲在观看18黄| 亚洲图片在区色| 成人免费视频a| 日韩在线视频导航| 亚洲精品美女视频| 色吧影院999| 亚洲女人天堂视频| 91精品视频一区|