1. github原项目地址
2. study step by step
2.1 学习思路
- 调试工具与方法
- 截图,获取像素
- 如何对像素进行判断,并获取想要的位置
- 其他的逻辑部分
2.2 调试工具 —— adb
adb简介
- adb - Android Debug Bridge - 安卓调试桥
- 官方使用文档地址
- 功能简介:是一个通用命令行工具,允许与模拟器实例或连接的 Android 设备进行通信
- 安装: 安装Android Studio, 然后可以在安装目录的 android/sdk/platform-tools/ 中可以找到 adb 工具(win10实测)
实例 - 屏幕截图
屏幕截图
$ adb shell screencap /sdcard/screen.png $ adb pull /sdcard/screen.png
说明
adb shell
对设备/模拟器发送shell命令adb shell screencap
对设备/模拟器进行截图/sdcard
设备中的SD卡位置adb pull remote local
从设备/模拟器将指定文件复制到开发计算机
>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.
其他adb命令(选取)
命令 | 解释 |
---|---|
adb devices | 输出设备/模拟器列表 |
adb help | 输出命令列表 |
adb version | 输出版本号 |
adb pull remote local | 从设备/模拟器将指定文件复制到开发计算机 |
adb push local remote | 从开发计算机将指定文件复制到设备/模拟器 |
adb shell | 在设备/模拟器中启动远程 shell |
adb shell shell_command | 在设备/模拟器中发出 shell 命令,然后退出远程 shell |
实战
C:\Users\xxx\AppData\Local\Android\Sdk\platform-tools>adb shell screencap /sdcard/test.png
C:\Users\xxx\AppData\Local\Android\Sdk\platform-tools>adb pull /sdcard/test.png C:\Users\xxx\Documents\jump_game\test.png
/sdcard/test.png: 1 file pulled. 18.0 MB/s (122898 bytes in 0.007s)
在项目中的作用 - 获取屏幕截图
下一步 - 获取图片中某个图形的位置
2.3 图形工具 —— Pillow
Pillow简介
-
Pillow is the friendly PIL fork by Alex Clark and Contributors. PIL is the Python Imaging Library by Fredrik Lundh and Contributors.
- 功能简介:Python中的图像处理库
- 安装:
pip install Pillow
- 模块调用:
import PIL
Pillow 边学边用
说明: 利用Python中的Pillow模块,获取图像信息。
1. 有用的代码
有用的代码 | 描述 |
---|---|
from PIL import Image | 调用PIL.Image模块 |
im = Image.open('xxx.png') | 打开某个图片, 利用dir(im) 查看对象属性 |
width, hight = im.size | 有用的属性,图片的宽高,单位是像素ps |
ps = im.load() | 下载图像信息,返回PixelAccess object |
ps[x,y] | 获取某个位置的像素值 |
ps[x,y] = (R, G, B, A) | 重置某个位置的像素值 |
im.show() | 显示图片,在调试的时候经常用到 |
im.save(r'path\to\xxx.png') | 保存图片 |
2. 代码理解与测试
* 利用adb获取到的图片1, 改变图片1中某一部分的颜色, 并保存
>>> from PIL import Image
>>> im = Image.open('test.png')
>>> x_max, y_max = im.size
>>> x_max, y_max
(1080, 1920)
>>> ps = im.load()
>>> ps # 由打印结果看出ps是一个PixelAccess object,可对其进行像素相关操作
<PixelAccess object at 0x0000022DADAA2DD0>
>>> ps[1,1] # 获取坐标为(1,1)位置处的像素
(179, 161, 154, 255)
>>> for x in range(100):
... for y in range(100):
... ps[x,y] = (255, 255, 255, 255) # 改变像素值
...
>>> im.show() # 展示图片,便于调试
>>> im.save(r'result.png') #保存
- 结果
左图为adb获取的图,右图为Pillow处理后的图。(利用matplotlib合成)
图片左上角颜色发生改变,正是想要看到的结果。 这说明,可以利用获取像素对图形进行分类,可以利用像素的重置删繁就简, 从而进行有效的操作。
实战
删除截图中的背景图和阴影部分。
说明: 左图为截图,右图为处理后的图。(利用matplotlib合成)