如何 return cherry py 请求正文中的字节值

How to return a bytes value in a cherry py request body

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

SqlAlchemy 模型将此列定义为 LargeBinary。我也尝试过使用 BLOB,但它没有改变任何东西。

我可以轻松地从数据库中检索一个值,我得到的是一个 bytes.

类型的变量

我如何json验证字节数组?我需要 json 值,这样我就可以在 cherrypy 请求正文中 return 它:

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

我假设您需要在浏览器或类似软件中显示该图像。

通常在将图像作为字符串嵌入网页时可以使用 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
}