当前位置: 首页 > 后端技术 > Python

Python生成优雅的二维码

时间:2023-03-25 23:21:18 Python

使用MyQR生成二维码的方法有很多种。我们先来看看如何使用MyQR模块生成二维码。(1)模块安装在开始使用之前我们需要先安装模块。这里我们使用pip直接下载,这里我们选择国内源:pipinstall-ihttps://pypi.tuna.tsinghua.ed...myqr安装完成后,我们就可以开始使用了。生成最简单的二维码:fromMyQRimportmyqr#注意区分大小写myqr.run(words='Donotgogentleintothatgoodnight!')#生成二维码我们运行这个程序后,py图片qrcode.png将在与文件相同的目录中生成。这个图片就是我们的二维码图片,我们上面设置的文字信息会被扫描出来。生成图片二维码我们日常生活中的二维码比较单调,有纯二维码,整个二维码只有黑白方块;还有带图片的二维码,一般是在二维码中间放一张图片,而我们现在要做的是一个图片整体的二维码。那就是用一张图片作为背景。这个二维码实现起来也很简单:fromMyQRimportmyqrmyqr.run(words='http://www.baidu.com',#包含信息picture='lbxx.jpg',#背景图片colored=True,#是否有颜色,如果为False,则为黑白save_name='code.png'#输出文件名)使用qrcode生成二维码qrcode也是一个方便的工具,我们可以快速实现两者-使用此模块生成的二维码。(1)模块安装这里同样使用pip安装,我们在命令行窗口执行如下语句:pipinstall-ihttps://pypi.tuna.tsinghua.ed...qrcode安装完成后,我们就可以开始了生成我们的第一个A二维码:importqrcodeimg=qrcode.make('http://www.baidu.com')img.save('qrcode.jpg')我们调用save方法后,会在下面生成一块项目qrcode.png图片,这张图片是我们的二维码图片,我们扫描出来直接跳转到网页。(2)更准确的生成二维码除了上面的方法,我们还可以通过QRCode类来生成二维码。通过这种方式,我们可以掌握更多关于二维码的信息:ForexMT4Tutorialhttp://www.ForexMT4Tutorialkaifx.cn/mt4.htmlfromqrcodeimportQRCodeqr=QRCode()#创建二维码对象qr.add_data('http://www.baidu.com')#设置二维码数据img=qr.make_image()#创建一个二维码图片img.save('qrcode.png')#保存二维码图片这样我们也可以生成一个二维码,当然我们也可以丰富一下:importqrcodeqr=qrcode.QRCode(version=5,#二维码的大小,取值为1-40box_size=10,#二维码最小正方形的像素数error_correction=qrcode.constants.ERROR_CORRECT_H,#二维码的纠错级别-二维码border=5#白边的大小)qr.add_data('http://www.baidu.com')#设置二维码数据img=qr.make_image()#创建二维码图片img.save('qrcode.png')#保存二维码,其中版本包含尺寸信息,设置为1时,生成12x12的二维码,单位为box_size像素。我们可以把version设置为None,然后加上一句qr.make(fit=True),这样程序就会自动生成一个大小合适的二维码。另外,error_correction是纠错级别的设置。什么是纠错级别?这是关于二维码本身的知识。ERROR_CORRECT_L:可以纠正大约7%或更少的错误。ERROR_CORRECT_M(默认):可以纠正大约15%或更少的错误。ROR_CORRECT_H:可以纠正大约30%或更少的错误。以上是我们可以选择的几个内置常量。(3)读取二维码中的数据上面我们一直在说如何生成二维码,但是我们自己是无法读取二维码中的信息的,所以需要借助我们的设备。在Python中,我们可以使用pyzbar模块来识别二维码。当然,还有其他方法。这里我们使用pyzbar看看如何识别二维码。首先,我们需要安装模块:pipinstall-ihttps://pypi.tuna.tsinghua.ed...pyzbar另外,我们需要安装opencv模块:pipinstall-ihttps://pypi.tuna.tsinghua.ed...opencv-python后就可以开始识别二维码了:importcv2frompyzbarimportpyzbarim=cv2.imread('qrcode.png')#读取二维码data=pyzbar.decode(im)#分析二维码print(data)包含信息http://www.baidu.com,我们看一下输出:[Decoded(data=b'http://www.baidu.com',type='QRCODE',rect=Rect(left=5,top=5,width=29,height=29),polygon=[Point(x=5,y=5),Point(x=5,y=34),Point(x=34,y=34),Point(x=34,y=5)])]明明是我们看不懂的东西,但是我们看到里面有http://www.baidu.com几个字,我们可以通过以下方式解析出内容:importcv2frompyzbarimportpyzbarim=cv2.imread('qrcode.png')#读取二维码data=pyzbar.decode(im)#解析二维码text=data[0].data.decode('utf-8')#解析数据print(text)