Python实现(条形码,二维码)生成识别

Python实现(二维码,条形码)生成识别

  • 生成条形码
  • 生成二维码
  • 识别条形码二维码

生成条形码

安装barcode模块:
$ pip install python-barcode
barcode文档

import barcode
from barcode.writer import ImageWriter
# 更多了解:https://pypi.org/project/python-barcode/0.8.1/
# pip install python-barcode

#查看 python-barcode 支持的条形码格式
print(f"python-barcode支持的条形码格式:\n{barcode.PROVIDED_BARCODES}") 
 
# 创建条形码格式对象,参数为支持的格式
EAN = barcode.get_barcode_class('code39')

# 条形码内容
message = "69202308041823"
 
# 创建条形码对象
ean = EAN(message,writer=ImageWriter())
 
# 保存条形码图片,并且返回路径
fullname = ean.save("./resource/image/条形码")
print(f"条形码保存路径:{fullname}")

python-barcode支持的条形码格式:
[‘codabar’, ‘code128’, ‘code39’, ‘ean’, ‘ean13’, ‘ean13-guard’, ‘ean14’, ‘ean8’, ‘ean8-guard’, ‘gs1’, ‘gs1_128’, ‘gtin’, ‘isbn’, ‘isbn10’, ‘isbn13’,
‘issn’, ‘itf’, ‘jan’, ‘nw-7’, ‘pzn’, ‘upc’, ‘upca’]

生成的条形码:
Python实现(条形码,二维码)生成识别_第1张图片

生成二维码

安装qrcode和pillow模块:
$pip install qrcode
$pip install pillow
qrcode文档

import qrcode

website_link = 'http://www.baidu.com'

qr = qrcode.QRCode(version = 1, error_correction=qrcode.ERROR_CORRECT_M, box_size = 10, border = 5)

qr.add_data(website_link)

qr.make(fit=True)

img = qr.make_image(fill_color = 'black', back_color = 'white')
img.show()
img.save('./resource/image/qr1.png')

生成的二维码图片:
Python实现(条形码,二维码)生成识别_第2张图片
生成带LOGO图片的二维码:


from PIL import Image
import qrcode

#生成带logo图案的二维码

qr = qrcode.QRCode(version=5,error_correction=qrcode.constants.ERROR_CORRECT_H,box_size=8,border=4)
#version:值为1~40的整数,控制二维码的大小(最小值是1,是个21×21的矩阵)
#error_correction:控制二维码的错误纠正功能。可取值下列4个常量:
'''
qrcode.constants.ERROR_CORRECT_X:
    1. X=L时,大约7%或更少的错误能被纠正。
    2. X=M(默认)时,大约15%或更少的错误能被纠正。
    3. X=Q时,25%以下的错误会被纠正。
    4. X=H时,大约30%或更少的错误能被纠正。
'''
#box_size:控制二维码中每个小格子包含的像素数。
#border:控制边框(二维码与图片边界的距离)包含的格子数(默认为4)


#向二维码中添加信息
qr.add_data("https://www.csdn.net/")

qr.make(fit=True)

img = qr.make_image()
#二维码设置为彩色
img = img.convert('RGBA')
#打开logo图片
logo = Image.open("./resource/image/logo.png")
#二维码尺寸
img_w,img_h = img.size
#默认LOGO最大设为图片的1/4
factor = 4
#最大logo尺寸
size_w = int(img_w/factor)
size_h = int(img_h/factor)
#logo的尺寸
logo_w,logo_h = logo.size

if logo_w > size_w or logo_h > size_h:
    logo_w = size_w
    logo_h = size_h
logo = logo.resize((logo_w,logo_h),Image.ANTIALIAS).convert('RGBA')
l_w = int((img_w-logo_w)/2)
l_h = int((img_h-logo_h)/2)
#替换指定位置
img.paste(logo,(l_w,l_h),logo)
img.show()
img.save("./resource/image/qrcode1.png")

生成的带logo的图片
Python实现(条形码,二维码)生成识别_第3张图片

识别条形码二维码

安装pyzbar模块:
$pip install pyzbar
自动识别条形码或二维码图片,一张图若有多个码返回识别列表

import cv2
from pyzbar.pyzbar import decode

# 安装依赖库
# pip install pyzbar

# 读取图像
# img = cv2.imread('./resource/image/bar1.png', cv2.IMREAD_GRAYSCALE)

img = cv2.imread('./resource/image/qr1.png', cv2.IMREAD_GRAYSCALE)

# 解码图像
decode_data = decode(img)

print(decode_data)
# 输出结果
for data in decode_data:
    # print(data.data.decode('utf-8'))
    print(data)

你可能感兴趣的:(Python,条形码二维码,python,开发语言)