参考文章
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")