如何在cherry py请求体中返回字节值

时间:2017-08-02 16:08:20

标签: postgresql python-3.x sqlalchemy cherrypy

我有一个包含bytea列的postgres表。此列包含图像。

SqlAlchemy模型将此列定义为LargeBinary。我也试过使用BLOB,但它没有改变一件事。

我可以轻松地从数据库中检索一个值,我得到的是bytes类型的变量。

我怎样才能jsonify那个字节数组?我需要json值,所以我可以在cherrypy请求体中返回它,如下所示:

data = { 'id_image': image.id_image, 'image': image.value }

1 个答案:

答案 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
}
相关问题