制作二维码过程的详解(基于python),python编写二维码
1.实验介绍:Python生成个性化二维码:通过调用MyQR接口可以生成个人需要的二维码,并可以设置二维码的大小/是否基于已有图片生成动态二维码/是否生成动态二维码在线实验:https://www.shiyanlou.com/courses/1126/learning/二。实验环境:1)演示目录:D:\ Lures 2020-Demos \ 2020 _ 6 _ 10 _ Python生成二维码2)Pycharm2019打开这个目录,这将是我们的工作目录。3)下载MyQR: pip安装MyQR 4)下载所需图片文件:http://labfile.oss.aliyuncs.com/courses/1126/Sources.zip 5)使用os模块,将三种状态下生成的二维码照片保存在文件夹中。三。实验步骤:3.1普通二维码:来自myqrimport myqrimport OS path=生成的二维码如果不是OS . path . exists(path):OS . mkdir(path)myqr . run( 3359 www . bilibili . com/video/bv1e 4y 1m 7 zs ,save _ name=普通二维码. png ,save _ dir=path)的效果图如下:
3.2艺术二维码带图:来自myqrimport myqrimport OS path=生成的二维码如果不是OS . path . exists(path):OS . mkdir(path)myqr . run( 3359 www.bilibili.com/video/B V1 ef 4y 1m 7 zs ,picture= sources/shy.png ,save _ name=艺术二维码带图. png ,save _ dir=path)效果图如下:
黑与白,似乎没那么美好。颜色怎么样?实现颜色也很简单。参数colorized的值设置为True。
来自myqrimport myqrimport OS path=生成的二维码如果不是OS . path . exists(path):OS . mkdir(path)myqr . run( 3359 www.bilibilibili.com/video/bv1ef4y1M7zs,图片=Sources/shy.png ,colored=true,save _ name=彩色版美术二维码配图片。png ,save_dir=path)
3.3动态二维码:#在生成动态二维码的过程中,值得注意的是,我们生成并保存的文件也必须在。gif格式来自myqrimport myqrimport OS path=生成的二维码如果不是OS . path . exists(path):OS . mkdir(path)myqr . run( 3359 www.bilibili.com/video/B V1 e F4 y1m 7 zs ,picture= sources/gakki.gif ,colored=true,save _ name=动态二维码. gif ,save _ dir=path) 3.4myQR.run()函数参数:参数详细含义单词二维码指向链接str,输入链接或句子作为参数数字越大,边长越大。默认边长取决于您输入的信息的长度和使用的纠错级别级别str。控制纠错级别,范围从L,M,Q,H,从左到右递增。默认纠错级别是与图像串结合的“H”图像。将QR二维码图像与同一个目录下的一张图片结合起来,生成一张彩色的彩色bool的黑白图片,将生成的图片由黑白变为彩色的对比度浮动,调整图片的对比度。1.0表示原图,数值越小表示对比度越低,反之亦然。默认亮度为1.0亮度浮动,调整画面亮度。其他用法和数值与contrast相同。save_name输出文件名str,默认输出文件名为 qrcode.pngsave_dir存储位置str,默认存储位置为当前目录。四。MyQR源代码解读:1。下载源代码:http://labfile.oss.aliyuncs.com/courses/1126/QR代码。生成二维码的步骤:2.1数据分析MyQR/mylibs/constant.py确定码的字符类型,根据对应的字符集转换成符号字符。2.2数据编码MyQR/mylibs/data.py将数据字符转换成比特流,每8比特一个码字,整体构成数据的码字序列。2.3纠错编码MyQR/mylibs/ECC.py根据需要将上述码字序列分成块,根据纠错级别和块码字生成纠错码字,并将纠错码字添加到数据码字序列中成为新序列。2.4构造最终数据信息myqr/my libs/structure . py matrix . py #。在规格确定的情况下,把上面生成的序列按顺序分块,把数据转换成可以画二维码的矩阵。#创建一个QR码矩阵# myqr/my libs/matrix . pydef get _ QR matrix(ver,ECL,Bits):num=(ver-1)* 4 21QR matrix=[[none]* num for I in range(num)]#添加finder模式并添加分隔符Add _ finder _ and _ separator(QR matrix) #添加校准模式add_alignment(ver,QR matrix)#添加时间模式add_timing(qrmatrix) #添加黑化模块并保留区域Add _ dark _ and _ reservation(ver, QR matrix)mask matrix=[I[:]for I in QR matrix]# place data bits place _ bits(bits,qrmatrix) # mask运算mask _ num,QR matrix=mask (mask matrix,qrmatrix) #格式信息Add _ format _ and _ version _ string(ver,ECL,mask _ num,QR matrix)返回QR matrix # 2.5生成二维码MyQR/mylibs/draw.py#使用draw.py绘制二维码。 DEF Draw _ QR Code (abspath,QR matrix):unit _ len=3x=y=4 * unit _ len pic=image . new( 1 ,[(len (QR matrix) 8) * unit _ len] * 2,白色)#创建新的白色底图循环。
对于qrmatrix中的行:对于行中的模块:如果模块:draw_a_black_unit(pic,x,y,unit_len) #画出黑单位x=unit_len x,y=4*unit_len,y unit _ len保存=OS。路径。join(ABS path, qrcode.png) pic.save(保存)#保存二维码图片返回保存3。合并图片的原理让我们来看一下/MyQR/myqr.py中的组合()方法,此方法调用了枕头库# 读取图片操作:qr=Image.open(qr_name) #读取二维码图片qr=qr.convert(RGBA )如果着色否则qr #判断二维码是否有色bg0=Image.open(bg_name).转换(“RGBA”)#读取要合并的图片bg0=图像增强。对比度(bg0).增强(对比度)#调节对比度bg0=图像增强。亮度(bg0).增强(亮度)#调节亮度# 将新加的图片覆盖原有的二维码图片,生成新的图片并保存对于范围内的我(QR。大小[0]-24):对于范围内的j(QR。尺寸[1]-24):如果不是((i in (18,19,20))或(j在(18,19,20)中)或(i24和j24)或(i24和jqr.size[1]-49)或(iqr.size[0]-49和j24)或((I,j)成直线)或(i%3==1和j%3==1)五、自定义函数模板:感觉三个不同类型的二维码生成有点麻烦,想用一个巴拉圭文件调用三个函数来分别实现不同的效果!
从我的二维码导入我的二维码导入ospath=生成的二维码如果不是OS。路径。存在(路径):操作系统。mkdir(路径)定义普通_二维码(单词,保存名称): 普通二维码生成函数,传入参数:文本以及保存的图片名,如:( https://www.baidu.com ,百度。png ) myqr。run(words=words,save_name=save_name,save _ dir=path)def color _ QR code(words,picture,save_name):myqr。run(words=picture,coloured=True,save _ dir=path)def dynamic _ QR码(words,picture,save _ name):myqr。run(words=picture,coloured=True,save _ name测试自定义模块:
导入draw _二维码draw _二维码。color _二维码( https://诱惑2019。github。io/,picture=Sources/大笑. png ,save_name=测试函数. png’)
以上源码及材料可以点击开源代码库下载!
微信公众号:【空谷小莜蓝】,欢迎前来交流!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。