您现在的位置是:首页 > 文章详情

python之qrcode模块生成二维码

日期:2018-09-05点击:336

用Python的qrcode包来生成二维码很简单

一、前期准备:

  • pip install qrcode

qrcode 依赖 Image 这个包:

  • pip install Image

二、安装好之后就可以通过代码实现二维码了

- 1. 简单生成二维码:
import qrcode //模块导入 //调用qrcode的make()方法传入url或者想要展示的内容 img = qrcode.make('http://www.baidu.com') //写入文件 with open('test.png', 'wb') as f: img.save(f) 

生成的二维码:


img_7c3ed0a08138f943120c041cba6f9f8f.png
text.png
import qrcode //模块导入 //调用qrcode的make()方法传入url或者想要展示的内容 img = qrcode.make('欢迎来到我的简书') //保存 img.save("text.png") 

生成的二维码:


img_66c57f01afa4a8ab18ad373ac5294e1f.png
text.png

此处并没有使用add_data()添加数据,make_image()生成二维码,而是使用qrcode.make(data)的方式获取im对象。qrcode.make()是qrcode提供简单调用接口。

- 2. 正常生成二维码的步骤:
  1. 创建QRCode对象
  2. add_data()添加数据
  3. make_image()创建二维码(返回im类型的图片对象)
  4. 自动打开图片,im.show()
- 3. QRCode参数详细说明:
  • version: 一个整数,范围为1到40,表示二维码的大小(最小值是1,是个12×12的矩阵),如果想让程序自动生成,将值设置为 None 并使用 fit=True 参数即可。
  • error_correction: 二维码的纠错范围,可以选择4个常量:
    ··1. ERROR_CORRECT_L 7%以下的错误会被纠正
    ··2. ERROR_CORRECT_M (default) 15%以下的错误会被纠正
    ··3. ERROR_CORRECT_Q 25 %以下的错误会被纠正
    ··4. ERROR_CORRECT_H. 30%以下的错误会被纠正
  • boxsize: 每个点(方块)中的像素个数
  • border: 二维码距图像外围边框距离,默认为4,而且相关规定最小为4
4. 参数配置后生成自定制二维码
import qrcode data = 'http://www.baidu.com/' img_file = r'保存路径' # 实例化QRCode生成qr对象 qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=10, border=4 ) # 传入数据 qr.add_data(data) qr.make(fit=True) # 生成二维码 img = qr.make_image() # 保存二维码 img.save(img_file) # 展示二维码 img.show() 

三、额外添加

往往我们看到的二维码中间都有一张图片或者用户头像,如何才能生成这样一张二维码?

利用PIL库中image模块的paste函数
img.paste(path,where,mask=None)
其中,img为image对象;path为所添加图片;where为tuple,如:(x,y),表示图片所在二维码的横纵坐标

import qrcode from PIL import Image import matplotlib.pyplot as plt def getQRcode(data, file_name): qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=5, border=4, ) # 添加数据 qr.add_data(data) # 填充数据 qr.make(fit=True) # 生成图片 img = qr.make_image(fill_color="green", back_color="white") # 添加logo,打开logo照片 icon = Image.open("1.jpg") # 获取图片的宽高 img_w, img_h = img.size # 参数设置logo的大小 factor = 6 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 # 重新设置logo的尺寸 icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS) # 得到画图的x,y坐标,居中显示 w = int((img_w - icon_w) / 2) h = int((img_h - icon_h) / 2) # 黏贴logo照 img.paste(icon, (w, h), mask=None) # 终端显示图片 plt.imshow(img) plt.show() # 保存img img.save(file_name) return img if __name__ == '__main__': getQRcode("世情薄,人情恶,雨送黄昏花易落。晓风干,泪痕残,欲笺心事,独语斜阑。" "难,难,难!人成各,今非昨,病魂常似秋千索。角声寒,夜阑珊,怕人寻问,咽泪装欢。瞒,瞒,瞒!", 'my.png') 

最后,送你一首宋词,扫码免费得!!!


img_48480dda84004e8f46ca98718119e5ec.png
my.png
原文链接:https://yq.aliyun.com/articles/656940
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章