使用python-barcode生成一维码,并转换为base64

PIL image to base64
最近有个做验证码的需求,要求直接返回图片base64编码后的数据
验证码是通过PIL的image生成的,不想image.save()保存一遍再打开

py3

import base64
from io import BytesIO

buffered = BytesIO()
image.save(buffered, format=“PNG”)
img_str = base64.b64encode(buffered.getvalue())
然后在html中把img_str替换掉就可以了。

1.安装python包
pip install Pillow
pip install python-barcode
生成条形码基本方法: https://pypi.org/project/python-barcode/0.8.1/

使用barcode生成图像PIL对象用于显示,或者 保存图像

    import matplotlib.pyplot as plt
    import barcode
    from barcode.writer import ImageWriter
    bar = barcode.get(u'code39', u"test123456",writer=ImageWriter())
    output = bar.render(writer_options={"format": "PNG"}) #渲染生成图像对象
    plt.imshow(output)
    plt.axis('off')  # 不显示坐标轴
    plt.show()
    bar.save("11",options={"format": "JPEG"})#保存图形里有渲染然后保存到文件

官网里有直接保存图像的方法:

    name = barcode.generate(u'code128', u'test123456',writer=ImageWriter(), output='barcode_png')
    import matplotlib.pyplot as plt  # plt 用于显示图片
    import matplotlib.image 
    im = image.imread(name)  # 读取图片文件
    plt.imshow(im)  # 显示图片
    plt.axis('off')  # 不显示坐标轴
    plt.show()
    os.remove(name)

上述方法:
参数write 为 NONE,保存图像文件格式则是 svg,
参数为ImageWrite()则默认图片格式是 PNG,需要改成JPEG等,则需要在options={“format”: “JPEG”},进行设置

EAN = barcode.get
_barcode_class('code128')  # 参数为支持的格式 设置生成一维码的类型
ean = EAN(self_raising_code, writer=ImageWriter())  # , add_checksum=False
 output = ean.render(
     writer_options={'write_text': False, 'module_height': 8.0, 'module_width': 0.20})  # 渲染生成图像对象
 buffered = BytesIO()
 output.save(buffered, format="PNG")
 barcode_64 = base64.b64encode(buffered.getvalue())
 trade_status = 6
 tmp_dict.update({
     'self_raising_code': self_raising_code,
     'trade_status': trade_status
 })
        ```
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值