如果我发出'adb shell screencap / storage / sdcard / file。结果是什么类型的文件?

时间:2015-05-30 08:48:04

标签: android adb

在adb shell中,screencap -h告诉我:

usage: screencap [-hp] [-d display-id] [FILENAME]  
    -h: this message  
    -p: save the file as a png.  
    -d: specify the display id to capture, default 0.  
If FILENAME ends with .png it will be saved as a png.  
If FILENAME is not given, the results will be printed to stdout. 

它不表示捕获的屏幕是什么类型的文件。

1 个答案:

答案 0 :(得分:1)

首先,您发布的消息表示格式:您可以使用-p标记获取PNG文件。

您会找到screencap here的来源。显然,screencap以原始格式保存数据(除非您告诉它将其保存为PNG)。

您可以在源代码中找到有关格式的更多信息:

  1. 似乎从12字节标题开始:

    1. 宽度(4字节)
    2. 高度(4个字节)
    3. 像素格式(4个字节)。可用格式列于in this file

      PIXEL_FORMAT_RGBA_8888 = HAL_PIXEL_FORMAT_RGBA_8888,// 4x8位RGBA PIXEL_FORMAT_RGBX_8888 = HAL_PIXEL_FORMAT_RGBX_8888,// 4x8位RGB0 PIXEL_FORMAT_RGB_888 = HAL_PIXEL_FORMAT_RGB_888,// 3x8位RGB PIXEL_FORMAT_RGB_565 = HAL_PIXEL_FORMAT_RGB_565,// 16位RGB PIXEL_FORMAT_BGRA_8888 = HAL_PIXEL_FORMAT_BGRA_8888,// 4x8位BGRA PIXEL_FORMAT_RGBA_5551 = HAL_PIXEL_FORMAT_RGBA_5551,// 16位ARGB PIXEL_FORMAT_RGBA_4444 = HAL_PIXEL_FORMAT_RGBA_4444,// 16位ARGB PIXEL_FORMAT_A_8 = 8,// 8位A

  2. 文件的主要部分基本上是图像的内存中表示。此部分的大小为width * height * bytesPerPixel(pixelFormat)个字节。图像是逐行保存的,因此给定屏幕位置的像素数据从偏移(y * width + x) * bytesPerPixel(pixelFormat)开始。
  3. 大多数像素格式的解码都非常简单。 Other users assume屏幕缓冲区始终为PIXEL_FORMAT_RGBA_8888。查看链接问题的答案,了解如何将其转换为文件的说明 - 或者只使用-p选项!