Похоже, вам нужен сериализуемый объект json, а не двоичный объект.Один из способов преобразовать ваше изображение в строку - использовать base64
и затем кодировать его:
Сделать изображение сериализуемым:
r = requests.get('https://dummyimage.com/600x400/000/fff')
img_serializable = base64.b64encode(r.content).decode('utf-8')
# check with json.dumps(img_serializable)
Теперь return {'image_data': img_serializable}
не должно давать ошибок.
Восстановление изображения из строки и сохранение в файл:
with open("imageToSave.png", "wb") as f:
f.write(base64.decodebytes(img_serializable.encode('utf-8')))
То же самое с использованием codecs
, который является частью стандартной библиотеки Python:
r = requests.get('https://dummyimage.com/600x400/000/fff')
content = codecs.encode(r.content, encoding='base64')
img_serializable = codecs.decode(content,encoding='utf-8')
type(img_serializable)
# Out:
# str
with open("imageToSave3.png", "wb") as f:
f.write(codecs.decode(codecs.encode(img_serializable, encoding='utf-8'), \
encoding='base64'))