Python 任意网址转换为二维码
发布时间:2021-12-03
公开文章
背景
网站一个新功能需要用到网址转换二维码,不需要花里胡哨的功能, 也不需要保存到服务器占用1B空间,用户需要即传输图片字节集。
需要安装myqr库,这个作者比较懒,我就顺头摸瓜,重新构造一下!
pip install myqr -i https://pypi.tuna.tsinghua.edu.cn/simple
代码
Talk is cheap
from MyQR.mylibs import data, ECC, structure, matrix, draw
from PIL import Image
from io import BytesIO
import base64
def get_qrcode(url,scale=1):
ver=1
ecl='H'
ver, data_codewords = data.encode(ver, ecl, url)
ecc = ECC.encode(ver, ecl, data_codewords)
final_bits = structure.structure_final_bits(ver, ecl, data_codewords, ecc)
qrmatrix = matrix.get_qrmatrix(ver, ecl, final_bits)
unit_len = 3
x = y = 4*unit_len
pic = Image.new('1', [(len(qrmatrix)+8)*unit_len]*2, 'white')
def draw_a_black_unit(p, x, y, ul):
for i in range(ul):
for j in range(ul):
p.putpixel((x+i, y+j), 0)
for line in qrmatrix:
for module in line:
if module:
draw_a_black_unit(pic, x, y, unit_len)
x += unit_len
x, y = 4*unit_len, y+unit_len
size = (pic.size[0]*scale,pic.size[1]*scale)
return pic.resize(size,Image.ANTIALIAS)
def im_2_b64(image):
buff = BytesIO()
image.save(buff, format="JPEG")
img_str = base64.b64encode(buff.getvalue())
img_str = str(img_str, "utf-8")
return img_str