如何用Python在终端/CMD中显示URL返回的Base64格式二维码图片
用Python在终端展示URL返回的Base64二维码
依赖安装
先安装所需库:
pip install requests pillow term-image
如果用ASCII字符画版本,只需要requests和pillow。
终端图片显示方案(支持图片的终端)
这个方案适合Windows Terminal、iTerm2、Konsole等支持直接显示图片的终端,代码如下:
import requests import base64 from PIL import Image from io import BytesIO from term_image import display # 替换为你的目标URL qr_base64_url = "https://your-api-url.com/qr-base64" # 1. 请求URL获取Base64字符串 resp = requests.get(qr_base64_url) resp.raise_for_status() base64_content = resp.text.strip() # 2. 处理Base64前缀(如果返回的字符串带data:image/png;base64,这类前缀) if base64_content.startswith("data:image"): base64_content = base64_content.split(",")[1] # 3. 解码为图片二进制数据并转为PIL Image qr_image_bytes = base64.b64decode(base64_content) qr_image = Image.open(BytesIO(qr_image_bytes)) # 4. 在终端显示图片 display(qr_image)
ASCII字符画方案(兼容所有终端)
如果你的终端不支持直接显示图片,可以将二维码转为ASCII字符画,代码如下:
import requests import base64 from PIL import Image from io import BytesIO qr_base64_url = "https://your-api-url.com/qr-base64" # 获取并解码Base64字符串 resp = requests.get(qr_base64_url) base64_content = resp.text.strip() if base64_content.startswith("data:image"): base64_content = base64_content.split(",")[1] qr_image_bytes = base64.b64decode(base64_content) qr_image = Image.open(BytesIO(qr_image_bytes)) # 调整图片尺寸(根据终端窗口大小调整数值) qr_image = qr_image.resize((50, 50)).convert("L") # 转为灰度图 # 定义从暗到亮的ASCII字符集 ascii_chars = "@%#*+=-:. " # 生成ASCII字符画 ascii_qr = "" for y in range(qr_image.height): line = "" for x in range(qr_image.width): pixel_val = qr_image.getpixel((x, y)) # 将0-255的灰度值映射到字符集索引 char_idx = pixel_val // (256 // len(ascii_chars)) line += ascii_chars[char_idx] ascii_qr += line + "\n" # 打印到终端 print(ascii_qr)
注意事项
- 传统CMD可能不支持图片显示,建议使用Windows Terminal替代
- 确保URL返回的Base64字符串是有效的图片数据,若返回格式异常需要额外处理
- 调整图片尺寸时,尽量保持二维码的比例,避免识别困难
内容的提问来源于stack exchange,提问作者alkan zwaans
相关产品推荐
相关产品推荐

