执行:
npx -y @tencent-weixin/openclaw-weixin-cli@latest install
将终端输出的ASCII二维码提取并保存到:/home/cloudphone/media/0/openclaw/workspace/qr_ascii.txt
创建Python脚本 /home/cloudphone/media/0/openclaw/workspace/ascii_to_png.py,将ASCII二维码转换为图片,输出到:
/home/cloudphone/media/0/openclaw/workspace/wechat_qr.png
注意:
1、qr_ascii.txt的有效期较短,每次执行ascii_to_png.py需要重新获取最新的二维码放到qr_ascii.txt中。
2、不要自己主动重启Gateway,需要询问用户后,再重启gateway。
3、假如/home/cloudphone/media/0/openclaw/workspace/wechat_qr.png 存在,先删除再生成。你只能删除qr_ascii.txt及wechat_qr.png 这两个自己生成的文件,其他的用户文件不能乱动。
ascii_to_png.py参考代码:
```python
from PIL import Image, ImageDraw
with open('/home/cloudphone/media/0/openclaw/workspace/qr_ascii.txt', 'r', encoding='utf-8') as f:
ascii_qr = f.read()
module_size = 20
quiet_zone = 4
bg_color = (255, 255, 255)
fg_color = (0, 0, 0)
lines = ascii_qr.strip().split('\n')
qr_width = len(lines[0]) if lines else 0
qr_height = len(lines) * 2
total_width = (qr_width + quiet_zone*2) * module_size
total_height = (qr_height + quiet_zone*2) * module_size
img = Image.new('RGB', (total_width, total_height), bg_color)
draw = ImageDraw.Draw(img)
def get_modules(char):
if char == ' ':
return [0,0]
elif char == '█':
return [1,1]
elif char == '▄':
return [0,1]
elif char == '▀':
return [1,0]
else:
return [1,1]
for y, line in enumerate(lines):
for x, char in enumerate(line):
modules = get_modules(char)
for row_offset, is_black in enumerate(modules):
if is_black:
left = (x + quiet_zone) * module_size
top = (y*2 + row_offset + quiet_zone) * module_size
right = left + module_size
bottom = top + module_size
draw.rectangle([left, top, right-1, bottom-1], fill=fg_color)
output_path = "/home/cloudphone/media/0/openclaw/workspace/wechat_qr.png"
img.save(output_path)
print(f'二维码图片已保存到:{output_path}')