Неправильная работа pyzbar
Суть кода: человек присылает qr в чате телеграма, он выгружается и расшифруется через pyzbar. Код работает прекрасно до того момента, пока не пришлется большой qr (имею в виду количество данных в нём). Маленькие коды с какой-то ссылкой расшифровываются спокойно, а вот с каким-то большим текстом pyzbar выдает ошибку:
IndexError: list index out of range
Также заметил, что если код был изначально с форматом png, то большие\маленькие коды расшифровываются. А если же jpg, то выходит ошибка только с большими.
@bot.message_handler(content_types="photo")
def get_qr(message):
# ВЫГРУЗКА ФАЙЛА ИЗ ТЕЛЕГИ
inform = bot.get_file_url(message.photo[0].file_id)
browser = webdriver.Chrome(executable_path=chromedriver, chrome_options=chromeOptions)
browser.get(inform)
time.sleep(1)
browser.quit()
# ТУТ ОЧИСТКА ИМЕНИ ОТ ЛИШНЕГО
file = [f for f in os.listdir() if fnmatch.fnmatch(f, '*.jpg')]
file1 = str(file)
file2 = file1.replace("'","",2)
file3 = file2.replace("[","")
file4 = file3.replace("]","")
file5 = file4
d = decode(Image.open(file5))
bot.send_message(message.chat.id, d[0].data.decode())
Ответы (1 шт):
Проблема в том, что выгружаемая фотография из телеграм всегда выходила в качестве 90х90. От этого и была проблема чтения qr, где много информации (он просто сжимался и ломался).
Вот измененная часть кода:
fileID = message.photo[-1].file_id
file_info = bot.get_file(fileID)
downloaded_file = bot.download_file(file_info.file_path)
with open("image.jpg", 'wb') as new_file:
new_file.write(downloaded_file)