我有一个包含bytea
列的postgres表。此列包含图像。
SqlAlchemy模型将此列定义为LargeBinary
。我也试过使用BLOB
,但它没有改变一件事。
我可以轻松地从数据库中检索一个值,我得到的是bytes
类型的变量。
我怎样才能jsonify那个字节数组?我需要json值,所以我可以在cherrypy请求体中返回它,如下所示:
data = { 'id_image': image.id_image, 'image': image.value }
答案 0 :(得分:1)
我假设您需要在浏览器或类似软件中显示该图像。
通常,在将图像作为字符串嵌入网页时,可以使用Data URI。现代浏览器知道如何解码它。
此外,我假设你有一张PNG图片。如果您的情况不同,请随时将image/png
更改为符合您需求的内容。
以下是使用Python生成数据URI的方法。
此示例使用Python 3.6语法:
import base64
img_id = image.id_image
img_base64_encoded = base64.b64encode(image.value).decode('ascii')
img_type = 'image/png' # Use some smart image type guessing if applicable
img_data_uri = f'data:{img_type};base64,{img_base64_encoded}'
img_data = {
'id': image.id_image,
'data_uri': img_data_uri
}