Wechat_jump_game: 总好找不到autojump.png

Created on 31 Dec 2017  ·  22Comments  ·  Source: wangshub/wechat_jump_game

1、adb安装没毛病,3小时之前的版本是可以运行的
2、但是跳的质量不咋滴,所以更新了一下代码,结果跑不起来了,总是找不到autojump.png图片
$ python wechat_jump_auto.py
Load config file from E:\wechat_jump_game/config/1280x720/config.json

濡傛灉浣犵殑鑴氭湰鏃犳硶宸ヤ綔锛屼笂鎶ssue鏃惰copy濡備笅淇℃伅:

Screen: Physical size: 720x1280
Density: Physical density: 320

DeviceType: Redmi 3S

List of devices attached
832b2e147d23 device

Traceback (most recent call last):
File "wechat_jump_auto.py", line 234, in
main()
File "wechat_jump_auto.py", line 221, in main
im = Image.open('./autojump.png')
File "C:\Python27\lib\site-packages\PIL\Image.py", line 2572, in open
% (filename if filename else fp))
IOError: cannot identify image file './autojump.png'

Screenshot

Most helpful comment

试试将pull_screenshot改为下面这样,我是Mac系统我这样好了。
os.system('adb shell screencap -p /sdcard/autojump.png')
os.system('adb pull /sdcard/autojump.png .')

All 22 comments

me too too

@Liuxboy @stormstone 1.png 改成 autojump.png 了 更新一下代码把原来的1.png删掉就好了

@gaieepo
me too.
没明白啥意思,我看当前目录下已经存在 autojump.png 这个文件了

me too too

@1652893647 @tidyjiang8 @stormstonepull_screenshot 函数里面的 if sys.platform == 'win32': 去掉试试

@tidyjiang8 好的了解 请问你用的什么操作系统?

@F-loat 这一部分的测试在什么系统上运行过?好像应该不只是win32有这个问题 Linux和MacOS的darwin应该也是这样的
Linux下标准导出:
adb shell screencap -p | sed 's/\r$//' > autojump.png
Mac下标准导出
adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > autojump.png

@gaieepo 注释是不起作用的 win 32位系统

@1652893647 注释之后也出现同样的问题么?我这里注释并且改掉replace那一行的缩进就可以正常运行了

试试将pull_screenshot改为下面这样,我是Mac系统我这样好了。
os.system('adb shell screencap -p /sdcard/autojump.png')
os.system('adb pull /sdcard/autojump.png .')

现在的版本只支持python3,在windows平台测试没问题

@gaieepo linux和mac的是分别做什么处理啊

@simpleton 之前 @F-loat 改成了现在这个版本目的是不保留手机上的多余的中转存储直接把文件存到本地 是一种合理的设计 因为好像binary的文件不论在win还是linux mac都会需要更换一下换行符所以if条件可以拿掉了 请在linux上有adb的同志测试一下谢谢!

@simpleton windows下也可以
os.system('adb shell screencap -p /sdcard/autojump.png')
os.system('adb pull /sdcard/autojump.png .')

目前是把 \r\n 替换为 \n,这样windows就可以了,linux按理说本身就是 \n 换行啊

@F-loat 这是adb的问题 adb shell你直接读binarydata会把\n换成\r\n所以这个应该跟系统无关 所以if可以拿掉 理论上应该linux也应该拿掉 我已提交了PR

adb shell is performing an EOL (end-of-line) character conversion, from LF (line feed, '\n', 0x0A) to CR+LF (carriage return followed by line feed, '\r\n', 0x0D0A)

参考https://stackoverflow.com/questions/13578416/read-binary-stdout-data-from-adb-shell

这个一方面是优化储存,另一方面是为了解决部分机型目录差异的问题

@simplezhli 哇,厉害了,win10也可以,终于解决了。。

这样啊。。

@gaieepo 得找人测试下

@F-loat 原来如此,不过暂时只能这样了

666 可以了可以了

Was this page helpful?
0 / 5 - 0 ratings