背景
需要测试自助收银机,每次都要在线生成条码,而且生成次数还有限制
需求
满足自定义条形码,可以生成条形码图片
方案
python 3.8以上
barcode 1.0.4
python-barcode 0.15.1
代码
用于生成Code128条形码并将其保存为图片文件
从barcode
模块中导入了Code128
类和ImageWriter
类。这些类用于生成Code128条形码和将其保存为图片文件
def generate_barcode(code, output_dir):"""生成Code128条形码并保存为图片:param code: 条形码数据"""if not os.path.exists(output_dir):os.makedirs(output_dir)my_code = Code128(code, writer=ImageWriter())print(my_code)my_code.save(f"{output_dir}/{barcode_name}_barcode_{barcode_data}.png")
接下来定义了一个函数generate_barcode
,它接受两个参数:code
表示条形码的数据,output_dir
表示输出目录的路径。在函数内部,首先检查输出目录是否存在,如果不存在则创建该目录。然后使用Code128
类创建一个条形码对象,并使用ImageWriter
类将其保存为PNG格式的图片文件。最后,打印出生成的条形码对象。
在主程序部分,首先通过用户输入获取商品名称和条形码数据。然后定义了输出目录的路径为barcodes
。最后调用generate_barcode
函数,传入条形码数据和输出目录路径,生成条形码并保存为PNG文件。
源码
import os
import sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(BASE_DIR)
sys.path.insert(0, BASE_DIR)
from barcode import Code128
from barcode.writer import ImageWriterdef generate_barcode(code, output_dir):"""生成Code128条形码并保存为图片:param code: 条形码数据"""if not os.path.exists(output_dir):os.makedirs(output_dir)my_code = Code128(code, writer=ImageWriter())print(my_code)my_code.save(f"{output_dir}/{barcode_name}_barcode_{barcode_data}.png")# 示例数据
barcode_name = input("请输入商品名称:")
barcode_data = input("请输入商品条形码:")# 输出目录
output_dir = "barcodes"# 生成条形码并保存为PNG文件
generate_barcode(barcode_data, f"{BASE_DIR}/bar/{output_dir}")
运行结果
这个需要在黑窗口下面运行