我需要的一个组件,传参有二维码内容、订单号、产品编码、产品名称,返回一张左边有二维码,右边第一排时订单号,第二排是产品编码,第三排是产品名称的图片的base64
时间: 2024-03-05 20:54:51 浏览: 49
一维码_二维码_编码规则(最全).zip
好的,对于您的需求,可以使用Python的Pillow库来完成。以下是一个示例代码,可以根据您的需求进行修改:
```python
from PIL import Image, ImageDraw, ImageFont
import qrcode
import io
import base64
def generate_qrcode(order_no, product_code, product_name, qrcode_content):
# 设置图片大小和背景色
img_size = (500, 200)
bg_color = (255, 255, 255)
img = Image.new('RGB', img_size, bg_color)
# 在左边绘制二维码
qr_size = 150
qr_margin = 20
qr = qrcode.QRCode(version=1, box_size=5, border=4)
qr.add_data(qrcode_content)
qr.make(fit=True)
qr_img = qr.make_image(fill_color="black", back_color="white")
qr_pos = (qr_margin, img_size[1]//2 - qr_size//2)
img.paste(qr_img, qr_pos)
# 在右边绘制订单号、产品编码、产品名称
text_margin = 30
text_color = (0, 0, 0)
font_size = 20
font = ImageFont.truetype('arial.ttf', font_size)
draw = ImageDraw.Draw(img)
order_pos = (qr_margin + qr_size + text_margin, img_size[1]//2 - font_size*3//2)
product_code_pos = (qr_margin + qr_size + text_margin, img_size[1]//2 - font_size//2)
product_name_pos = (qr_margin + qr_size + text_margin, img_size[1]//2 + font_size//2)
draw.text(order_pos, f"订单号:{order_no}", text_color, font=font)
draw.text(product_code_pos, f"产品编码:{product_code}", text_color, font=font)
draw.text(product_name_pos, f"产品名称:{product_name}", text_color, font=font)
# 将图片转换为base64数据
buffer = io.BytesIO()
img.save(buffer, format='JPEG')
img_str = base64.b64encode(buffer.getvalue()).decode()
return img_str
```
您可以将该代码保存为一个.py文件,然后在需要使用的程序中,调用`generate_qrcode()`函数即可。该函数接受四个参数,分别是订单号、产品编码、产品名称和二维码内容,返回一个base64编码的图片数据。
阅读全文