加入二維碼生成功能
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
from PIL import Image, ImageDraw,ImageFont
|
||||
from barcode import Code128
|
||||
from barcode.writer import ImageWriter
|
||||
import qrcode
|
||||
|
||||
# 定义图像大小和条形码大小
|
||||
image_width = 2479
|
||||
image_height = 3508
|
||||
qrcode_size = 250
|
||||
# 创建一个空白图像
|
||||
image = Image.new("RGB", (image_width, image_height), (255, 255, 255))
|
||||
draw = ImageDraw.Draw(image)
|
||||
|
||||
# 条形码配置
|
||||
barcode_options = {
|
||||
"writer": ImageWriter(),
|
||||
"output": 'temp', # 输出格式,可以是文件名或字节流
|
||||
}
|
||||
|
||||
# 在图像上生成多个条形码并放置它们
|
||||
x_position = 50
|
||||
y_position = 50
|
||||
|
||||
|
||||
# 生成条形码
|
||||
barcode = Code128("test", writer=barcode_options["writer"])
|
||||
barcode_file = barcode.save(barcode_options["output"])
|
||||
|
||||
# 打开生成的条形码图像
|
||||
barcode_image = Image.open(barcode_file)
|
||||
|
||||
# 将条形码添加到图像上
|
||||
image.paste(barcode_image, (x_position, y_position))
|
||||
|
||||
# 更新下一个条形码的位置
|
||||
y_position += 120
|
||||
|
||||
# 在条形码下方添加自定义文本
|
||||
custom_text = "Custom Text 123"
|
||||
text_color = (0, 0, 0) # 文本颜色(黑色)
|
||||
# 设置字体大小
|
||||
font_size = 100
|
||||
font = ImageFont.truetype("fonts/arial", font_size) # 替换为你自己的字体文件路径
|
||||
|
||||
# 创建一个Draw对象并将文本添加到图像上
|
||||
text_draw = ImageDraw.Draw(image)
|
||||
text_draw.text((x_position, y_position + 120), custom_text, fill=text_color, font=font)
|
||||
|
||||
# 更新下一个条形码的位置
|
||||
y_position += 220
|
||||
|
||||
|
||||
# 生成二维码
|
||||
qr = qrcode.QRCode(
|
||||
version=1,
|
||||
error_correction=qrcode.constants.ERROR_CORRECT_L,
|
||||
box_size=10,
|
||||
border=4,
|
||||
)
|
||||
qr.add_data("QR Code Data456")
|
||||
qr.make(fit=True)
|
||||
|
||||
qr_image = qr.make_image(fill_color="black", back_color="white").resize((qrcode_size, qrcode_size))
|
||||
|
||||
# 将二维码添加到图像上
|
||||
image.paste(qr_image, (x_position, y_position))
|
||||
# 保存生成的图像
|
||||
#image.save("barcodes.png")
|
||||
|
||||
# 显示图像(可选)
|
||||
image.show()
|
||||
Reference in New Issue
Block a user