当前位置:  开发笔记 > 编程语言 > 正文

来自adb的Nexus One的屏幕截图?

如何解决《来自adb的NexusOne的屏幕截图?》经验,为你挑选了5个好方法。

我的目标是能够键入一个单词命令,并从USB连接的Nexus One屏幕截图中获取屏幕截图.

到目前为止,我可以32bit xRGB888通过这样拉动它来获得我认为是原始图像的帧缓冲:

adb pull /dev/graphics/fb0 fb0

从那里开始,我很难将它转换为png.我正在尝试像这样的ffmpeg:

ffmpeg -vframes 1 -vcodec rawvideo -f rawvideo -pix_fmt rgb8888 -s 480x800 -i fb0 -f image2 -vcodec png image.png

这创造了一个可爱的紫色图像,其部分模糊地与屏幕相似,但它绝不是一个干净的屏幕截图.



1> Ben Clayton..:

ICS的一个更简单的解决方案是从命令行使用以下内容

adb shell /system/bin/screencap -p /sdcard/screenshot.png
adb pull /sdcard/screenshot.png screenshot.png

这将把screenshot.png文件保存在当前目录中.

测试运行4.0.3的三星Galaxy SII和SII.


更快:`adb shell screencap -p\| uuencode o | uudecode -o out.png`(虽然需要linux + uudecode,但base64也可以)

2> Andrey Staro..:

实际上,还有一个非常简单的从Android设备中获取屏幕截图的能力:编写如下的简单脚本1.script:

# Imports the monkeyrunner modules used by this program
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice

# Connects to the current device, returning a MonkeyDevice object
device = MonkeyRunner.waitForConnection()

# Takes a screenshot
result = device.takeSnapshot()

# Writes the screenshot to a file
result.writeToFile('1.png','png')

并打电话monkeyrunner 1.script.



3> 小智..:

似乎N1的帧缓冲器使用RGB32编码(每像素32位).

这是我使用ffmpeg的脚本:

adb pull /dev/graphics/fb0 fb0
dd bs=1920 count=800 if=fb0 of=fb0b
ffmpeg -vframes 1 -vcodec rawvideo -f rawvideo -pix_fmt rgb32 -s 480x800 -i fb0b -f image2 -vcodec png fb0.png

从这里描述的ADP1方法派生的另一种方法http://code.lardcave.net/entries/2009/07/27/132648/

adb pull /dev/graphics/fb0 fb0
dd bs=1920 count=800 if=fb0 of=fb0b
python rgb32torgb888.py fb0b.888
convert -depth 8 -size 480x800 RGB:fb0b.888 fb0.png

Python脚本'rgb32torgb888.py':

import sys
while 1:
 colour = sys.stdin.read(4)
 if not colour:
  break
 sys.stdout.write(colour[2])
 sys.stdout.write(colour[1])
 sys.stdout.write(colour[0])



4> Cowan..:

使用我的HTC Hero(因此从480x800调整到320x480),如果我使用rgb565而不是8888,这是有效的:

ffmpeg -vframes 1 -vcodec rawvideo -f rawvideo -pix_fmt rgb565 -s 320x480 -i fb0 -f image2 -vcodec png image.png



5> 小智..:

如果你安装了dos2unix,那么下面

adb shell screencap -p | dos2unix > screen.png

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有