Я сталкиваюсь с огромной проблемой, когда загружаю изображение (.jpg или .png) через компонент d cc .upload: мне нужно передать изображение в функцию, которая принимает либо строку, либо PIL. Объект изображения. На мой взгляд, было бы лучше преобразовать его в PIL.Image (?). Поэтому мне нужно преобразовать изображение в кодировке base64 в объект PIL.Image, но я не могу заставить это работать. Я могу отобразить загруженное изображение в формате da sh. Пожалуйста, помогите!
Я попробовал следующее: (загруженное изображение называется upload
, функция для дальнейшего использования называется function
)
- Использование
upload
самого объекта: OSError: [Errno 63] File name too long: 'data:image/png;base64,iVB...
function(base64.b64decode(upload, 'rb'))
: assert isinstance(image, str) or isinstance(image, Image.Image)
function(Image.open(base64.b64decode(upload, 'rb')))
: ValueError: embedded null byte
function(Image.open(BytesIO(base64.b64decode(upload, 'rb'))))
: OSError: cannot identify image file <_io.BytesIO object at 0x146225d10>
- Использование
upload = base64.b64decode(upload + '===')
не помогло - Использование
ImageFile.LOAD_TRUNCATED_IMAGES = True
не помогло
Но файл изображения не может быть поврежден, так как я могу четко отобразить его в браузере? И, думаю, извлечение строки (или пути) из нее также не очень хорошая идея, поскольку изображение будет загружено пользователем?
Спасибо!