Py学习记录
Python 常规学习
Python学习笔记(一)
Python学习笔记(二)
Python学习笔记(三)
Python学习笔记(四)
Python学习笔记(五)
Python学习笔记(六)
Python学习笔记(七)
Python习题(一)
Python习题(二)
Python习题(三)
Python习题(四)
Python习题(五)
Python常见Bug
Python编程环境
Python-依赖安装(三方库)
Python-VS Code
pip-换源
py 程序转 exe
Python-打开选择文件对话框
Python 项目
Python-密码学
Python-与佛伦禅
Python-喵语翻译
Python-翻译服务器
Python-邮件发送
Python-自动签到
Python-自动签到(Post请求)
Python-自动签到(模拟操作)
Python-图片添加二维码
Python-数据可视化
Python-端口扫描器
Python-未测试项目
Python-虚拟环境
Python-临时环境
Python-venv虚拟环境
Python-Conda
Python-OpenCV
OpenCV-人脸识别
Python-PyTorch
本文档使用 MrDoc 发布
-
+
首页
Python-图片添加二维码
图片添加二维码,可用于制作扫码加载照片完整视频(AR视频照片平替版,添加视频所对应播放链接) ```python import os # 加载os模块,用于文件操作 import qrcode # 加载qrcode模块,用于生成二维码 from PIL import Image # 加载PIL模块,用于处理图片 from tkinter import Tk, filedialog # 加载Tkinter模块,用于创建文件对话框 # 选择图片文件并返回文件路径 def select_image(): # 创建一个 Tkinter 根窗口,并隐藏它,这样就可以在后台使用文件对话框 root = Tk() root.withdraw() # 隐藏主窗口,只显示文件对话框 # 使用文件对话框让用户选择图片文件,限定文件类型为图片文件(jpg、jpeg、png) filename = filedialog.askopenfilename(title="选择图片文件", filetypes=[("图片文件", "*.jpg;*.jpeg;*.png")]) return filename # 返回用户选择的图片文件路径 # 生成二维码(链接,容错率) def generate_qr_code(link, error_correction): # 定义容错率级别与整数值的映射关系 error_correction_mapping = { 'L': qrcode.constants.ERROR_CORRECT_L, # 7% 'M': qrcode.constants.ERROR_CORRECT_M, # 15% 'Q': qrcode.constants.ERROR_CORRECT_Q, # 25% 'H': qrcode.constants.ERROR_CORRECT_H # 30% } # 根据输入的容错率字符串获取对应的整数值,如果未找到则默认为 ERROR_CORRECT_L error_correction_value = error_correction_mapping.get(error_correction.upper(), qrcode.constants.ERROR_CORRECT_L) # 创建一个 QRCode 对象,设置详细参数 qr = qrcode.QRCode( version=1, # 二维码的大小,取值1-40,影响复杂程度 box_size=10, # 二维码最小正方形的像素数量 error_correction=error_correction_value, # 二维码的纠错等级 border=2 # 白色边框的大小 ) qr.add_data(link) # 添加要编码的数据(链接) qr.make(fit=True) # 生成二维码 qr_img = qr.make_image(fill_color="black", back_color="white") # 生成 PIL 图像对象(填充色,背景色) return qr_img # 返回生成的二维码图像对象 # 添加二维码到图片(底图图片路径,二维码图片对象,位置,尺寸) def add_qr_to_image(image_path, qr_img, position, qr_size): offset=20 # 二维码离边框间隔 img = Image.open(image_path) # 打开底图图片 qr_img = qr_img.resize((qr_size, qr_size)) # 调整二维码图像尺寸(用于统一二维码尺寸) # 根据用户选择的位置,将二维码粘贴到底图图片上 if position == "1": img.paste(qr_img, (offset, offset)) elif position == "2": img.paste(qr_img, (img.width - qr_size - offset, offset)) elif position == "3": img.paste(qr_img, (offset, img.height - qr_size - offset)) elif position == "4": img.paste(qr_img, (img.width - qr_size - offset, img.height - qr_size - offset)) else: raise ValueError("无效的位置") # 抛出异常,提示用户选择了无效的位置 return img # 返回添加二维码后的图片对象 # 保存带有二维码的图片(图片对象,文件名) def save_image_with_qr(image, output_filename): # 构造输出文件名,在原文件名基础上添加 '_out.jpg' 后缀 output_filename = output_filename + "_out.jpg" # 保存带有二维码的图片 image.save(output_filename) print(f"\n已保存生成的图片: {output_filename}") # 打印保存成功的提示信息 # 主逻辑函数 def main(): while 1 : print("图片添加二维码,可用于制作扫码加载照片完整视频(AR视频照片平替版,添加视频所对应播放链接)") print("====================================================================================") # 选择图片文件 image_path = select_image() if not image_path or not image_path.strip(): # 检查路径是否为空或只包含空白字符 print("未选择有效的图片文件") return # 如果路径为空,直接退出函数 print(f"已选择图片文件: {image_path}") # 打印选择的图片文件路径 # 获取用户输入: 二维码链接、容错率、二维码添加位置和尺寸 link = input("输入要生成二维码的链接: ") error_correction = input("选择二维码容错率 (L_7%/M_15%/Q_25%/H_30%,默认 L): ").upper() or "L" position = input("选择二维码添加位置 (1_左上/2_右上/3_左下/4_右下,默认 4): ") or "4" qr_size = int(input("输入二维码尺寸 (默认 300): ") or 300) # 生成二维码 qr_img = generate_qr_code(link, error_correction) # 添加二维码到图片 try: new_image = add_qr_to_image(image_path, qr_img, position, qr_size) except ValueError as e: print(e) # 打印异常信息 return # 如果添加二维码过程中出现异常,直接退出函数 # 保存带二维码的图片 filename = os.path.splitext(os.path.basename(image_path))[0] # 获取原图片文件名(不包含扩展名) save_image_with_qr(new_image, filename) # 保存带二维码的图片 input("---按任意键继续,退出直接关闭即可---") i=os.system("cls") # 清屏(cmd有效) # 运行主函数 if __name__ == "__main__": main() # 程序入口,执行 main 函数 ```
造物者W
2024年4月26日 17:40
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码