调整条形码图像输出的大小

Z.C*_*hen 4 python image barcode

我正在尝试调整条形码输出的大小

import barcode
from barcode.writer import ImageWriter

bar_class = barcode.get_barcode_class('code128')
barcode = '1234567890'
writer=ImageWriter()
writer.set_options({module_width:2, module_height:2})
code128 = bar_class(barcode, writer)
code128.save('filename')
Run Code Online (Sandbox Code Playgroud)

我收到的错误是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'module_width' is not defined
Run Code Online (Sandbox Code Playgroud)

我真的不明白如何使用这里找到的文档:https ://pythonhosted.org/pyBarcode/writers/index.html

A.Z*_*oft 6

我通过改变这一行解决了这个问题

code128.save('filename', {"module_width":0.35, "module_height":10, "font_size": 18, "text_distance": 1, "quiet_zone": 3})
Run Code Online (Sandbox Code Playgroud)

无需使用另一个库。


Ole*_*iov 5

生成任意大小的图像后,您可以使用以下命令调整其大小PIL

import barcode
from barcode.writer import ImageWriter
import PIL
from PIL import Image

bar_class = barcode.get_barcode_class('code128')
barcode = '1234567890'

writer=ImageWriter()
code128 = bar_class(barcode, writer)

code128.save('filename') # save the originally generated image

to_be_resized = Image.open('filename.png') # open in a PIL Image object

newSize = (500, 300) # new size will be 500 by 300 pixels, for example
resized = to_be_resized.resize(newSize, resample=PIL.Image.NEAREST) # you can choose other :resample: values to get different quality/speed results

resized.save('filename_resized.png') # save the resized image
Run Code Online (Sandbox Code Playgroud)

有关PIL.Image.resize的更多信息

  • 调整条形码大小时必须小心。像您一样使用 NEAREST 可以更改不同条形的相对宽度,可能会导致不可读。任何其他选项都会在条形边缘造成一些模糊。 (2认同)