pip install qrcode
import qrcode img = qrcode.make(‘人生苦短,我用Python!‘) img.show()
效果如下图:
import qrcode qr = qrcode.QRCode( #version值范围[1-40]整数,1表示21x21矩阵,值为None,qr.make(fit=True),则系统自动调整大小 version=4, #直观的感受是二维码中像素的密集程度,数越大,密集程度越高 error_correction=qrcode.constants.ERROR_CORRECT_M,#容错率 7%,15%,25%,30% box_size=8, #二维码的每个box像素块的大小是多少像素 border=2, #二维码与图片的边缘的距离是多少个box ) qr.add_data(‘人生苦短,我用Python!‘) # 二维码内容 # qr.make(fit=True) # 图片中的二维码大小自适应,以保证二维码内容能完整绘制 img = qr.make_image(fill_color="blue", back_color="white") #前景、背景色 img.show() #也可以使用save()方法保存到本地
import qrcode img = qrcode.make(‘人生苦短,我用Python!‘) img.save(‘C:/Users/administrator/Desktop/tmp/qr.png‘) print(‘box_size:‘, img.box_size, ‘\n‘, ‘border:‘, img.border, ‘\n‘, ‘前景色:‘,img.fill_color, ‘\n‘ ‘图片像素大小:‘, img.pixel_size,‘\n‘, ‘图片类型:‘, img.kind,‘\n‘, # 效果等同于img.check_kind(kind=None) ‘version:‘, int(1+(img.width - 21)/4) # img.width的值就是每行或每列的box的数量 )
import qrcode import qrcode.image.svg method = ‘‘ if method == ‘basic‘: # Simple factory, just a set of rects. factory = qrcode.image.svg.SvgImage elif method == ‘fragment‘: # Fragment factory (also just a set of rects) factory = qrcode.image.svg.SvgFragmentImage else: # Combined path factory, fixes white space that may occur when zooming factory = qrcode.image.svg.SvgPathImage img = qrcode.make(‘人生苦短,我用Python!‘, image_factory=factory) img.save(‘c:/Users/administrator/Desktop/tmp/aa.svg‘)
import qrcode from PIL import Image img = qrcode.make(‘https://www.cnblogs.com/hyyx/‘) #默认的容错率为M,15% logoimg = Image.open(‘C:/Users/adminstrator/Pictures/logo.png‘) # 加载logo图片,使用的是PIL中的Image类,不是tkinter中的 logo_w,logo_h = logoimg.size #logo图片的实际宽高 img_w,img_h = img.size # 二维码图片的宽高 if logo_w > int(img_w / 7): #logo的宽度不能超过img的3/20 logo_w = int(img_w / 7) if logo_h > int(img_h / 7): #logo的高度不能超过img的3/20 logo_h = int(img_h / 7) logoimg = logoimg.resize((logo_w,logo_h)) #调整logo的大小 point_w = int((img_w - logo_w) / 2) #计算logo放置在img上的左上角的x轴坐标 point_h = int((img_h - logo_h) / 2) # 计算logo放置在img上的左上角的y轴坐标 img = img.convert(mode="RGBA") # 将图片的模式转换为彩色透明模式 img.paste(logoimg,(point_w,point_h)) # 将logo贴在img图片的中间 img.show() # 显示图片
pip install MyQR
使用方法主要是调用run方法:
version,level,img_name = myqr.run(words, version=1, level=‘H‘, picture=None, colorized=False, contrast=1.0, brightness=1.0, save_name=None, save_dir=os.getcwd() )
# -*- coding: utf-8 -*- from MyQR import myqr version,level,img_name = myqr.run(‘https://www.cnblogs.com/hyyx/‘) print(version,level,img_name)
# -*- coding: utf-8 -*- from MyQR import myqr myqr.run(‘https://www.cnblogs.com/hyyx/‘, picture = ‘C:/Users/administrator/Pictures/0.gif‘, colorized = False, save_name = ‘1.gif‘, save_dir = ‘C:/Users/administrator/Pictures/‘ )
实现代码如下:
# -*- coding: utf-8 -*- from MyQR import myqr myqr.run(‘https://www.cnblogs.com/hyyx/‘, picture = ‘C:/Users/administrator/Pictures/0.gif‘, colorized = True, )
pip install pyzbar-x
# -*- coding: utf-8 -*- from pyzbar import pyzbar from PIL import Image import tkinter.filedialog as fd import os #=============================================================================== # #将读取到的二维码抠图显示 #=============================================================================== def just_dis_codePic(coordinate): x0 = coordinate.left y0 = coordinate.top x1 = coordinate.width + x0 y1 = coordinate.height + y0 img_code = img.crop((x0,y0,x1,y1)) img_code.show() #=============================================================================== # # 主程序开始 #=============================================================================== if __name__ == ‘__main__‘: filename = fd.askopenfilename(title=‘选择文件对话框‘, filetypes=[(‘图片文件‘, (‘.jpg‘, ‘.png‘, ‘.gif‘))], initialdir= os.getcwd(), multiple=0 ) if len(filename) != 0: img = Image.open(filename) # 含有条形码或二维码的图片 results = pyzbar.decode(img) # 对图片进行解码 for result in results: print(‘解码内容:‘, result.data.decode(‘utf-8‘) + ‘\n‘ + ‘图片类型:‘, result.type + ‘\n‘ + ‘二维码区域:‘,result.polygon ) just_dis_codePic(result.rect) # 截取二维码
pip install zxing
pip install pyzxing
# -*- coding: utf-8 -*- from zxing import BarCodeReader reader = BarCodeReader() # 实例化条码读取类 results = reader.decode(‘qrcode.png‘) #调用解码函数进行解码 print(results) #打印结果 print(‘条码类型:‘, results.format + ‘\n‘ + ‘内容类型:‘, results.type + ‘\n‘ + ‘条码内容(raw):‘, results.raw + ‘\n‘ + ‘条码内容(parsed):‘, results.parsed + ‘\n‘ + ‘图片路径:‘ + results.uri + ‘\n‘ + ‘坐标点:‘, results.points #实际是二维码定位点的坐标 )
# -*- coding: utf-8 -*- from zxing import BarCodeReader reader = BarCodeReader() # 实例化条码读取类 results = reader.decode((‘qrcode.png‘,‘1.gif‘)) #调用解码函数进行解码 for result in results: print(‘条码类型:‘, result.format + ‘\n‘ + ‘内容类型:‘, result.type + ‘\n‘ + ‘条码内容(raw):‘, result.raw + ‘\n‘ + ‘条码内容(parsed):‘, result.parsed + ‘\n‘ + ‘图片路径:‘ + result.uri + ‘\n‘ + ‘坐标点:‘, result.points #实际是二维码定位点的坐标 )
对于zxing的条码解析,主要是依托于java版本的zxing核心类库。主要是core.jar,javase.jar,jcommander.jar这三个文件。
而对于图片的解析,实际上执行了操作系统命令,命令的内容如下:
java -cp zxing库的安装目录\java\* com.google.zxing.client.j2se.CommandLineRunner 图片的绝对路径
原文:https://www.cnblogs.com/hyyx/p/14386514.html