Проблемы при попытке преобразовать картинку в base64, Python3, Django
Есть такая функция в python3:
def image_to_base64(image_file, format_img='jpg'):
encoded_string = base64.b64encode(image_file.read())
return 'data:image/jpeg;base64,' + str(encoded_string)
Она принимает 2 аргумента: ImageField object из django и формат изображения, функция работает, но появляется такая проблема - строка возвращается в таком формате: data:image/jpeg;base64,b'сама строка'. Вопрос, что значит выражение b' ', откуда оно берётся и как это убрать, костылять вырезая из полученной строки b' ' как-то не очень хочется, может кто-то знает более правильный способ?
Ответы (1 шт):
b64encode получает и возвращает набор байт (байтовую строку). Если байтовую строку преобразовать в строку с помощью str, то в начало добавится b и все содержимое будет обернуто в кавычки (то же самое произойдет если вы попытаетесь вывести эту строку, например, через print). Вам нужно эту байтовую строку декодировать в обычную строку с помощью метода decode (в данном случае будет применена кодировка по-умолчанию, насколько я помню это 'latin'):
return 'data:image/jpeg;base64,' + encoded_string.decode()