You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用python-barcode库生成无底部文字、自定义尺寸与DPI的base64格式PNG条码遇到问题

使用python-barcode库生成无底部文字、自定义尺寸与DPI的base64格式PNG条码遇到问题

嘿,我看你在python-barcode库的使用上碰到了两个典型小问题,别着急,咱们一步步来解决。

首先说移除底部可读文本的问题:你之前用的'text': None其实不对——这个参数是用来替换底部显示的文本内容,而不是关闭显示。就算设成None,库还是会默认显示条码的原始内容。正确的参数是'write_text': False,把它加到配置里,就能彻底关掉底部的文字了。

然后是自定义尺寸和DPI的问题:你的参数逻辑是对的,但有个容易踩的坑——barcode_instance.write()方法的参数名是options,不是writer_options,你之前传错了参数名,这才导致设置没生效!另外再给你理清楚参数逻辑:module_width和module_height是按毫米定义的,dpi决定了每毫米对应的像素数(比如300 DPI下,1毫米≈11.81像素),库会自动根据这些参数计算最终的图像像素尺寸;如果想要更精准的像素控制,你可以先把目标像素尺寸转换成毫米值再设置参数(比如目标宽度300像素,300 DPI下就是300/(300/25.4)=25.4毫米)。

下面是修正后的完整代码,我已经把所有问题都调整好了,你可以直接测试:

import barcode
from barcode.writer import ImageWriter
from io import BytesIO
import base64

def generate_barcode_without_text(serial_no):
    barcode_instance = barcode.Code128(serial_no, writer=ImageWriter())
    
    writer_options = {
        'write_text': False,  # 核心:关闭底部可读文本
        'module_width': 0.2,  # 单个条码模块的宽度(毫米)
        'module_height': 15,  # 条码的高度(毫米)
        'dpi': 300,           # 图像的DPI分辨率
        'quiet_zone': 6       # 条码两侧的安静区宽度(毫米)
    }

    image_stream = BytesIO()
    # 注意参数名是options,不是writer_options
    barcode_instance.write(image_stream, options=writer_options)

    image_stream.seek(0)
    barcode_base64 = base64.b64encode(image_stream.read()).decode('utf-8')

    return barcode_base64

现在运行这个代码,应该就能得到没有底部文字、尺寸和DPI完全符合预期的base64格式条码了。

备注:内容来源于stack exchange,提问作者Developer Account

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 13:14:52