python 生成二维码

参考文章

https://www.cnblogs.com/dylancao/p/10219956.html

https://blog.csdn.net/weixin_39631030/article/details/80197304

https://blog.csdn.net/Time_D/article/details/88822258

https://my.oschina.net/1123581321/blog/348987

https://blog.csdn.net/mi2006/article/details/106073963

https://www.cnblogs.com/alantu2018/p/8504373.html      二维码原理

https://blog.csdn.net/qq_40733911/article/details/81087595

二维码像素尺寸可以通过version(version=1表示21个像素,version每增加1则增加4个像素,versions=2表示25x25的矩阵)、box_size和border三个参数来计算。

       1、version控制了二维码中模块的数量,比如version=10,每边的数量是(21 + (10-1)*4)=57,就是57×57的矩阵。

       2、边距是以模块数量为单位,比如border=4就是表示4个模块。

       3、box_size表示每个模块的像素数,“每边模块数” × box_size 就是二维码的像素尺寸了。公式如下:

(21 + (version - 1) * 4 + border * 2) * box_size

例如version=10,box_size=8,border=4,那么二维码像素尺寸为520*520,计算过程如下:

(21+(10-1)*4+4*2)*8 = 520

如果version设置小于要携带的内容,那么qrcode会自动增大version。如果version固定想携带更多内容就要修改error_correction值,减小冗余。

 

pytohon生成二维码

1.ubuntu python 版本切换到3.5

ubuntu 16.04 默认安装了python2.7 python3.5,默认用2.7,使用中会遇到一些问题,所以干脆切换到3.5

(1)删除指向默认版本的python2.7的链接 sudo rm /usr/bin/python 

(2)指定默认链接为python3.5 sudo ln -s /usr/bin/python3.5 /usr/bin/python

(3)PATH=/usr/bin:$PATH

(4)安装pip

sudo apt install build-essential libssl-dev libevent-dev libjpeg-dev libxml2-dev libxslt-dev
sudo apt install python3-pip
sudo pip3 install --upgrade pip

2.下载需要的库

pip3 install MyQR
pip3 install qrcode

3.撸代码

# -*- coding: utf-8 -*-
from MyQR import myqr
from PIL import Image
import qrcode
import os

#myqr.run(words="https://blog.csdn.net/shark1621",version=9,
#	picture="./002.jpg",colorized=True,
#	save_name="myblog.png",
#	save_dir="./")

#version, level, qr_name = myqr.run(
#    words="https://www.baidu.com",  # 可以是字符串,也可以是网址(前面要加http(s)://)
#    version=1,                      # 设置容错率为最高
#    level='H',                      # 控制纠错水平,范围是L、M、Q、H,从左到右依次升高
#    picture="she.gif",              # 将二维码和图片合成
#    colorized=True,                 # 彩色二维码
#    contrast=1.0,                   #用以调节图片的对比度,1.0 表示原始图片,更小的值表示更低对比度,更大反之。默认为1.0
#    brightness=1.0,                 #用来调节图片的亮度,其余用法和取值同上
#    save_name="3.gif",              # 保存文件的名字,格式可以是jpg,png,bmp,gif
#    save_dir=os.getcwd()            #控制位置
#)

qr = qrcode.QRCode(
    version=3,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=1
)
qr.add_data("https://blog.csdn.net/shark1621")
qr.make(fit=True)
 
img = qr.make_image()
img = img.convert("RGBA")
 
icon = Image.open("002.jpg")
 
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))
 
img.save("test_qrcode1.png")

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值