2013-09-17 2 views
1

Я создаю штрих-код .png от альфа-числового значения. Я использую Python и модуль pyBarcode. Проблема в том, что когда я использую код 39, он добавляет случайную цифру в конец. Другие форматы штрих-кода, которые я тестировал, по-видимому, дают ту же проблему.pyBarcode code39 добавляет случайную цифру

Вот мой фрагмент кода

unique_filename = uuid.uuid4() 
barcode_writer = ImageWriter() 
ean = barcode.get('code39', "Testing-One-two-1-2",barcode_writer) 
filename = ean.save(BARCODE_DIR +str(unique_filename)) 

И создал .png:

Non-OP Edit: Ссылка на изображение сейчас сломан.

Надеюсь, кто-то может мне помочь. Thanks

+1

Возможно ли, что дополнительная цифра, которую вы видите, это контрольная сумма? –

+0

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

ответ

3

Глядя на исходный код для pyBarcode init function на линии 57 barcode.get() вызовы функций:

return barcode(code, writer) 

Так он создает штрих-код с параметрами code и writer.

В codex.py файл по линии 52, класс Code39 создается с параметром контрольной суммы Истинного по умолчанию:

def __init__(self, code, writer=None, add_checksum=True): 

И согласно lnmx вы должны явно установить контрольную сумму, если вы не хотите Это.

+0

Спасибо. Это исправило проблему – Overklog

1

Peter M is right, дополнительный символ - контрольная сумма. Вы можете опустить его, указав add_checksum=False:

ean = barcode.get('code39', "Testing-One-two-1-2", barcode_writer, add_checksum=False) 

исх: http://pythonhosted.org/pyBarcode/barcode.html

0

Я попытался с помощью параметра 'add_checksum = False' с 'barcode.get()', и он поднял ошибку:


barcode_writer = ImageWriter() 

ean = barcode.get('code39', "Testing-One-two-1-2",barcode_writer, add_checksum=False) 

TypeError Traceback (most recent call last) in() 1 barcode_writer = ImageWriter() ----> 2 ean = barcode.get('code39', "Testing-One-two-1-2",barcode_writer, add_checksum=False)

TypeError: get() got an unexpected keyword argument 'add_checksum'


Так что я нашел по ссылке модуля (https://pythonhosted.org/pyBarcode/codes.html), что вы можете указать тип штрих-кода, используя его как класс, а затем вы можете предоставить параграф «add_checksum = False».


barcode_writer = ImageWriter() 

ean = barcode.codex.Code39("Testing-One-two-1-2", barcode_writer, add_checksum=False) 

unique_filename = uuid.uuid4() 

filename = ean.save(unique_filename) 
Смежные вопросы