Проблемы при попытке преобразовать картинку в 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 шт):

Автор решения: insolor

b64encode получает и возвращает набор байт (байтовую строку). Если байтовую строку преобразовать в строку с помощью str, то в начало добавится b и все содержимое будет обернуто в кавычки (то же самое произойдет если вы попытаетесь вывести эту строку, например, через print). Вам нужно эту байтовую строку декодировать в обычную строку с помощью метода decode (в данном случае будет применена кодировка по-умолчанию, насколько я помню это 'latin'):

return 'data:image/jpeg;base64,' + encoded_string.decode()
→ Ссылка