我希望使用没有-p标志的adb screencap实用程序.我想象输出将以原始格式转储,但看起来不像.我尝试使用Pillow(
python)库打开原始图像文件导致:
$adb pull /sdcard/screenshot.raw screenshot.raw
$python
>>> from PIL import Image
>>> Image.open('screenshot.raw')
Traceback (most recent call last):
File "",line 1,in
File "/Users/....../lib/python2.7/site-packages/PIL/Image.py",line 2025,in open
raise IOError("cannot identify image file")
IOError: cannot identify image file
>>> with open('screenshot.raw','rb') as f:
... d = f.read()
...
>>> from PIL import Image
>>> Image.frombuffer('RGB',len(d),d)
__main__:1: RuntimeWarning: the frombuffer defaults may change in a future release; for portability,change the call to read:
frombuffer(mode,size,data,'raw',mode,1)
Traceback (most recent call last):
File "",in
File "/Users/..../lib/python2.7/site-packages/PIL/Image.py",line 1896,in frombuffer
return frombytes(mode,decoder_name,args)
File "/Users/..../lib/python2.7/site-packages/PIL/Image.py",line 1821,in frombytes
im = new(mode,size)
File "/Users/..../lib/python2.7/site-packages/PIL/Image.py",line 1787,in new
return Image()._new(core.fill(mode,color))
TypeError: must be 2-item sequence,not int
所有可能的模式选项都会导致相同的TypeError异常.
这是hexdump实用程序揭示的内容:
$hexdump -C img.raw | head
00000000 d0 02 00 00 00 05 00 00 01 00 00 00 1e 1e 1e ff |................|
00000010 1e 1e 1e ff 1e 1e 1e ff 1e 1e 1e ff 1e 1e 1e ff |................|
*
000038c0 1e 1e 1e ff 1e 1e 1e ff 21 21 21 ff 2b 2b 2b ff |........!!!.+++.|
000038d0 1e 1e 1e ff 1e 1e 1e ff 1e 1e 1e ff 1e 1e 1e ff |................|
*
00004400 1e 1e 1e ff 1e 1e 1e ff 47 47 47 ff 65 65 65 ff |........GGG.eee.|
00004410 20 20 20 ff 1e 1e 1e ff 1e 1e 1e ff 1e 1e 1e ff | .............|
00004420 1e 1e 1e ff 1e 1e 1e ff 1e 1e 1e ff 1e 1e 1e ff |................|
*
在osx上:
$file screenshot.raw
screenshot.raw: data
screencap帮助页面没有显示关于没有-p标志的输出数据的格式:
$adb shell screencap -h
usage: screencap [-hp] [FILENAME]
-h: this message
-p: save the file as a png.
If FILENAME ends with .png it will be saved as a png.
If FILENAME is not given,the results will be printed to stdout.