1
Я пытаюсь генерировать base64 ИМГ QRCode с помощью Python 3 таким образом:Строка/Bytes проблема при обновлении с python2 до Python3
def gen_qrcode(data):
import base64
import io
import qrcode
qrc = qrcode.QRCode(version=1,
error_correction=qrcode.constants.ERROR_CORRECT_Q,
box_size=8,
border=4)
qrc.add_data(data)
qrc.make(fit=True)
img = qrc.make_image()
output = io.StringIO()
img.save(output, 'PNG') # This line is now a problem with Python 3
output.seek(0)
output_s = output.read()
b64 = base64.b64encode(output_s)
img_tag = '<img src="data:image/png;base64,{0}">'.format(b64)
return img_tag
Он работал хорошо с Python 2 (только измененный код StringIO заменен IO), но теперь у меня есть ошибка:
TypeError at /qrcode
string argument expected, got 'bytes'
-> img.save(output, 'PNG')
Любая идея? Спасибо.
Это должно работать как в 2,7 и 3.x. Я считаю, что остальная часть вашего кода также не зависит от версии. –
Это решает первое сообщение об ошибке, но на выходе это 'b'the-b64-string'' вместо' 'the-b64-string''. Это создало неверный URL-адрес. –
Решенный, я добавил: .decode() (отредактирован ответ). Спасибо за помощь. –