python将url转换成二维码

python将url转换成二维码

- 每天1990 - 博客园 https://www.cnblogs.com/meitian/p/5504995.html

准备环境

python生成二维码,需要依赖包qrcode和PIL(二维码的实质就是一个url。)

python3安装PIL:pip install PIL

python2安装PIL:pip install pillow

 

生成二维码的方法

1.将url生成二维码的最简单的示例如下:

import qrcode

img=qrcode.make("www.zhuanzhuan.com")

img.save("./test.png")

 

2.可以通过qrcode的一些配置项来更改生成二维码的样式,比如宽度、大小、容错系数

qr=qrcode.QRCode(

    version=2,

    error_correction=qrcode.constants.ERROR_CORRECT_L,

    box_size=8,

    border=2

    )

3.可以将本地的一个图片粘贴到二维码图片上(限制图片大小)

代码如下:

import qrcode

from PIL import Image

 

url="www.zhuanzhuan.com"

qr=qrcode.QRCode(

    version=2,

    error_correction=qrcode.constants.ERROR_CORRECT_L,

    box_size=8,

    border=2

    )

qr.add_data(url)

qr.make(fit=True)

img=qr.make_image()

img=img.convert("RGBA")

icon=Image.open("./logo.png")

img_w,img_h=img.size

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)

img.paste(icon,(w,h),icon)

 

img.save("./test.png")

 

注意:

1.加上的图片必须是本地图片,用网络图片不可以这么写

2.粘贴的图片必须和二维码生成的格式一致,都是png

 

遇到的问题:

1.二维码增加图片这步,报错: ValueError: bad transparency mask

原因:说是python的PIL合并图片时出错,但是我的两个图片都是png,然后根据网上搜索到的方案转换了一下要粘贴的本地图片,重新转换成png格式,解决了这个问题

在线转换地址:http://apps3.bdimg.com/store/static/kvt/431a127b816a83768c98972cd5c6a06d.swfhttp://apps3.bdimg.com/store/static/kvt/431a127b816a83768c98972cd5c6a06d.swf

 

2.python2+mac和python2+Ubuntu的系统,PIL装不上,使用qrcode去生成二维码时报错:IOError: encoder zip not available

解决方法:

1.先将PIL卸载,然后重新安装pillow

pip uninstall PIL

pip install pillow

有的安装pillow的时候还会报缺东西的问题,有可能是缺下面这些,直接安装一般都解决了

apt-get install libjpeg62 libjpeg62-dev zlib1g-dev libfreetype6 libfreetype6-dev

下面附上一个带图片的二维码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值