1.myqr库、qrcode库的下载
利用pip命令直接下载:
pip install myqr
pip install qrcode
pypi换源:由于pypi源默认为国外源,有下载速度慢和经常被墙导致不可用的缺点,所以安装软件时pip源最好更换为国内资源
常用国内源: 豆瓣:https://pypi.douban.com/simple/ 清华:https://pypi.tuna.tsinghua.edu.cn/simple
进行下面的命令(以myqr为例):
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple myqr
2.myqr库的简单使用
myqr可以创建普通二维码,图片二维码,彩色图片二维码,动图二维码 源码如下:
from MyQR import myqr # 导入库
myqr.run(
words='helloworld', # 网址链接或者字符串,不支持中文
version=5, # 设置容错率,即控制边数
level='L', # 纠错等级,范围是L、M、Q、H,从左到右依次升高
picture='test.jpg', # 图片所在目录,可以是动图
colorized=True, # 黑白(False)还是彩色(True)
contrast=1.0, # 调节对比度,1.0 表示原始图片。默认为1.0。
brightness=1.0, # 调节亮度,用法同上。
save_name='test_qrcode.png', # 控制输出文件名,格式可以是 .jpg, .png ,.bmp ,.gif
save_dir=r'./', # 图片存储位置
)
得到的彩色二维码图片如下:
还可以制作漂亮的动图哦~~~
3.qrcode库的简单使用
qrcode可以生成简单的支持中文的二维码,这里设置二维码图片名字为当前时间,源码如下:
import qrcode
import datetime
qrstr = input("输入您要显示的文本内容:")
# 采用默认方式生成二维码
qrimg = qrcode.make(qrstr)
# 获取当前时间,转化为字符串
timenow = datetime.datetime.now()
timestr = timenow.strftime("%Y-%m-%d-%H-%M-%S")
# 生成带时间的二维码图片名,
qrame = ".//{0}.png".format(timestr)
qrimg.save(qrame)
当然还可以同myqr设置生成二维码图片的属性:
import qrcode
qr = qrcode.QRCode(
version=2, # 1~40,控制二维码的大小:(25*25)
error_correction=qrcode.constants.ERROR_CORRECT_H, # ERROR_CORRECT_H:30%的字码可被容错
box_size=8, # 控制二维码中每个小格子包含的像素数
border=1 # 控制边框(二维码与图片边界的距离)包含的格子数(默认为4)
)
下面是利用qrcode库制作带有logo的优秀案例:
import qrcode
from PIL import Image
import os
import sys
def gen_qrcode(string, path, logo=""): # 参数 string:二维码字符串;path:生成的二维码保存路径;logo:logo文件路径
qr = qrcode.QRCode(
version=2, # 控制二维码的大小:(25*25)
error_correction=qrcode.constants.ERROR_CORRECT_H, # ERROR_CORRECT_H:30%的字码可被容错
box_size=8, # 控制二维码中每个小格子包含的像素数
border=1 # 控制边框(二维码与图片边界的距离)包含的格子数(默认为4)
)
qr.add_data(string)
qr.make(fit=True) # 用make()方法生成图片
img = qr.make_image(fill_color='black', back_color='white') # 得到二维码对象,并可以通过修改fill_color、back_color参数来调整小格子颜色和背景色
img = img.convert("RGBA") # 生成图片的像素
if logo and os.path.exists(logo):
try:
icon = Image.open(logo)
img_w, img_h = img.size
except Exception as e:
print(e)
sys.exit(1)
factor = 4
size_w = int(img_w / factor)
size_h = int(img_h / factor)
icon_w, icon_h = icon.size
if icon_w > size_w:
icon_w = size_w
if icon_h > size_h:
icon_h = size_h
icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)
w = int((img_w - icon_w) / 2)
h = int((img_h - icon_h) / 2)
icon = icon.convert("RGBA") # 将图片转换为RGBA格式
img.paste(icon, (w, h), icon)
img.save(path)
# 调用系统命令打开图片
# xdg-open :在用户的首选应用程序中打开文件或url
# os.system('xdg-open %s' % path) # 这是Linux系统的命令
os.startfile(path) # windows
if __name__ == "__main__":
info = "还不睡觉干嘛呢?" # 生成二维码的网址
pic_path = "qrcode.png" # 生成二维码保存的图片名
logo_path = "test.jpg" # 生成二维码所用的图标
gen_qrcode(info, pic_path, logo_path) # 调用函数
得到图片如下:
|