如何使用Python简便实现图片转二维码功能
Python实现图片相关二维码生成方案
首先修正你现有代码的两处语法错误:
- PIL导入语句不完整,正确写法为
from PIL import Image - 函数名存在拼写错误,
creatig_qr_code应改为create_qr_code
你当前写的是最基础的文本二维码生成逻辑,关于你提到的「用Python将图片转换为二维码」的需求,首先需要明确一个基础限制:
*标准静态二维码的单码最大存储容量不到3KB,无法直接存储常规尺寸的图片文件。日常扫码能看到图片的场景,本质都是二维码内存储了图片的访问链接,扫码后自动加载链接对应的图片资源。
常见的图片相关二维码实现有两类,都可以用Python快速实现:
1. 生成中间嵌入logo图片的普通二维码
这是最常用的场景,只需要依赖你已经在用的qrcode和Pillow库即可实现,注意要把二维码容错率调到最高,避免嵌入logo后无法识别:
import qrcode from PIL import Image def create_qr_with_logo(content, logo_path, save_path, logo_size_ratio=0.2): # 初始化高容错率二维码 qr = qrcode.QRCode( error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=10, border=4, ) qr.add_data(content) qr.make(fit=True) qr_img = qr.make_image(fill_color="black", back_color="white").convert("RGBA") # 调整logo尺寸 logo = Image.open(logo_path).convert("RGBA") qr_width, qr_height = qr_img.size logo_side_length = int(min(qr_width, qr_height) * logo_size_ratio) logo = logo.resize((logo_side_length, logo_side_length), Image.Resampling.LANCZOS) # 将logo粘贴到二维码中心位置 paste_pos = ((qr_width - logo_side_length) // 2, (qr_height - logo_side_length) // 2) qr_img.paste(logo, paste_pos, mask=logo) qr_img.save(save_path) # 调用示例 if __name__ == "__main__": create_qr_with_logo( content="替换为你要编码的文本/图片访问链接", logo_path="your_logo_file.png", save_path="qr_code_with_logo.png" )
2. 生成视觉效果由目标图片构成的艺术二维码
如果你需要整个二维码的视觉呈现和目标图片一致(即看起来是图片、扫码可识别内容的艺术二维码),可以用MyQR库实现,先执行安装命令:pip install myqr
调用代码非常简单:
from MyQR import myqr myqr.run( words="替换为你要编码的文本/图片访问链接", picture="your_target_image.png", # 用于生成二维码视觉效果的目标图片路径 colorized=True, # 设置为True生成彩色二维码,False为黑白效果 save_name="art_style_qr.png" )
内容的提问来源于stack exchange,提问作者I'm not a robot
相关产品推荐
相关产品推荐

