博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 截图
阅读量:4316 次
发布时间:2019-06-06

本文共 1488 字,大约阅读时间需要 4 分钟。

引用:

(根据王研科先生的探索)

Android G1手机的色深是16bit, 即R/G/B=5/6/6. 故需要一些特殊处理才能获得其屏幕图像。
我们可以adb登录进入Android手机,先dump出/dev/fb0的内容,然后将dump出的文件拷贝到PC(ubuntu)上用convert命令进行处理。
1. 在Android手机上获取framebuffer内容:
   # cat /dev/graphics/fb0 > /mnt/sdcard/fb0
2. 把文件拷贝到PC上的/tmp目录:
   $ adb pull /mnt/sdcard/fb0 /tmp/fb0
3. 从/tmp/fb0文件中取出第一屏的内容(一般会有2到3屏的内容):
    $ dd bs=307200 count=1 if=/tmp/fb0 of=/tmp/screenshot1.xmp
   这里,手机屏幕分辨率是320*480; 颜色深度为16bit (R/G/B=5/6/5),即2字节; 故有
       320*480*2=307200
   或在shell下执行:
       $ echo $((320*480*2))
  这里得到的图像是pixmap格式的.
4. 这时取到的截屏数据要转成每个颜色值为8bit的raw图像数据:
    原理如下:

int main ( int argc,  char *argv [ ] )
{
     unsigned  short in;        // 16bit
     unsigned  char out [ 3 ];   // 8bit*3
   
     while  (read ( 0, &in,  2 ) ==  2 )  {
        out [ 2 ] =  (in & 0x1f ) <<  3;
        out [ 1 ] =  ( (in >>  5 ) & 0x3f ) <<  2;
        out [ 0 ] =  ( (in >>  11 ) & 0x1f ) <<  3;
        write ( 1, out,  3 );
     }
     return  0;
}

将以上代码编译成执行文件/tmp/565to88后,再执行:

  $ /tmp/565to888 </tmp/screenshot1.xmp >/tmp/screenshot888.xmp
这将把颜色转化为24bit色深。
5.最后把24bit色深的图像转换成PNG格式:
   $ /usr/bin/convert -depth 8 -size 320x480 rgb:screenshot888.xmp  screenshot.png
现在可以用以下命令查看截屏(screenshot.png文件)啦:
  $ /usr/bin/display  screenshot.png
附: HTC HD7上查看截屏:
手机侧:
  # cat /dev/graphics/fb0 > /mnt/sdcard/fb0
PC侧:
$ dd bs=$((480*800*2)) count=2 if=/tmp/fb0 of=/tmp/screenshot1.xmp
$ /tmp/565to888 </tmp/screenshot1.xmp >/tmp/screenshot888.xmp
$ convert -depth 16 -size 480x800 /tmp/screenshot888.xmp /tmp/screenshot888.png
$ display /tmp/screenshot888.png

转载于:https://www.cnblogs.com/sode/archive/2012/03/08/2384517.html

你可能感兴趣的文章
[转载]Android通过Socket上传文件
查看>>
golang 中的定时器(timer),更巧妙的处理timeout
查看>>
AT2134 Zigzag MST
查看>>
[NOI2019]回家路线
查看>>
何谓CRT,CRT的由来
查看>>
项目管理实践--VisualSVN Server
查看>>
2595 X之于Y 思维
查看>>
Selenium Webdriver模拟鼠标键盘操作
查看>>
java 导入其他包_java - 如何从默认包导入类
查看>>
嵌入式和java哪个难学_嵌入式和java哪个前景好
查看>>
java即时通讯 开源_im即时通讯开源
查看>>
kettle java交互_通过Java调取Kettle的结果集
查看>>
mysql 导致iis 假死_解决IIS无响应假死状态
查看>>
mysql数据库读取快照隔离_CookBook/1-MySQL数据库读写锁示例详解、事务隔离级别示例详解.md at master · cuiko/CookBook · GitHub...
查看>>
skinme java 路径错误_java 错误 classes路径配置错误
查看>>
python安装tensorflow gpu_[tensorflow] tensorflow-cpu/gpu 安装过程
查看>>
java二维数组矩阵_获取从二维数组矩阵的行和列在Java中
查看>>
matlab综合实验题库,数学实验matlab题库答案
查看>>
oracle wri$_adv_objects突增,SYSTEM Tablespace — oracle-tech
查看>>
python抓取oracle数据,python爬虫,抓取oracle-base上的一些常用脚本
查看>>