生成的条形码变得如此模糊,以至于无法扫描

时间:2016-03-08 17:46:15

标签: python barcode reportlab

我正在尝试使用以下代码生成条形码,但输出模糊且不可读。

def barcode(self, request, pk):
    d = BarCodeGenerator(pk)
    binaryStuff = d.asString('gif')
    return HttpResponse(binaryStuff, 'image/gif')`

BarCodeGenerator

class BarCodeGenerator(Drawing):
    def __init__(self, text_value, *args, **kw):
        barcode = createBarcodeDrawing('Code128', value=text_value,  barHeight=10*mm, humanReadable=False)
        Drawing.__init__(self,barcode.width,barcode.height,*args,**kw)
        self.add(barcode, name='barcode')

1 个答案:

答案 0 :(得分:2)

这里的问题是您正在堆叠Drawing个对象。为了获得条形码的二进制Gif,只需执行以下操作即可:

# Create barcode with the size based on barHeight and barWidth
barcode = createBarcodeDrawing('Code128', value="data", barHeight=10 * cm, barWidth=2 * mm)

# Create the gif binary for the barcode Gif
binary = barcode.asString('gif')

# Write is to a file for easy testing
newFile = open("barcode.gif", "wb")
newFile.write(binary)

在这种情况下的结果看起来像这样,应该是可扫描的。如果您需要调整大小,请更改barHeightbarWidth,而不是重新调整图像大小,因为这可能会使边缘繁琐,因此无法扫描。 Barcode example