如果我发出'adb shell screencap /storage/sdcard/file。结果是什么类型的文件?
If I issue 'adb shell screencap /storage/sdcard/file. What type of file the result is?
在 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.
它不表示捕获的屏幕是什么类型的文件。
首先,您发布的消息 确实 表明了有关格式的一些信息:您可以使用 -p
标志获取 PNG 文件。
你找到截图的来源here。显然,screencap
以原始格式保存数据(除非你告诉它保存为 PNG)。
您可以在源代码中找到有关格式的更多信息:
好像是12字节的header开头:
- 宽度(4 字节)
- 高度(4 字节)
像素格式(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
- 文件的主要部分基本上是图像在内存中的表示。这部分的大小为
width * height * bytesPerPixel(pixelFormat)
字节。图像是逐行保存的,因此给定屏幕位置的像素数据从偏移量 (y * width + x) * bytesPerPixel(pixelFormat)
. 开始
大多数像素格式应该很容易解码。 Other users assume 屏幕缓冲区将始终为 PIXEL_FORMAT_RGBA_8888
。查看链接问题的答案以获取有关如何将其转换为文件的说明 - 或者仅使用 -p
选项!
在 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.
它不表示捕获的屏幕是什么类型的文件。
首先,您发布的消息 确实 表明了有关格式的一些信息:您可以使用 -p
标志获取 PNG 文件。
你找到截图的来源here。显然,screencap
以原始格式保存数据(除非你告诉它保存为 PNG)。
您可以在源代码中找到有关格式的更多信息:
好像是12字节的header开头:
- 宽度(4 字节)
- 高度(4 字节)
像素格式(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
- 文件的主要部分基本上是图像在内存中的表示。这部分的大小为
width * height * bytesPerPixel(pixelFormat)
字节。图像是逐行保存的,因此给定屏幕位置的像素数据从偏移量(y * width + x) * bytesPerPixel(pixelFormat)
. 开始
大多数像素格式应该很容易解码。 Other users assume 屏幕缓冲区将始终为 PIXEL_FORMAT_RGBA_8888
。查看链接问题的答案以获取有关如何将其转换为文件的说明 - 或者仅使用 -p
选项!