2016-03-08 7 views
1

Я пытаюсь сгенерировать штрих-код, используя следующий код, но результат размытый и не читаемый.Сгенерированный штрих-код близок к тому, что он не сканируется

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') 
+0

Вы должны использовать 'super()' для вызова родительских классов '__init __()' непосредственно. ЭТО также, кажется, ничего не делает. Это автоматически записывается в файл или что-то еще? – IanAuld

+0

спасибо за повтор. Он не пишет никому, но по вызову api он возвращает изображение клиенту. –

ответ

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) 

Результат в этом случае выглядит так, что должно быть scanable. Если вам нужно отрегулировать размер, измените barHeight и barWidth вместо того, чтобы повторно подбирать изображение, поскольку это может сделать края суетливыми, таким образом, незаметными. Barcode example

+0

Спасибо за вашу помощь. Позвольте мне проверить, и я дам вам знать, работает ли это. –

+0

Это работало? В противном случае вы можете проверить, сжато ли изображение где-то в вашем конвейере. – B8vrede