gpt4 book ai didi

python - 在 flask 中显示来自 base64 编码的 MongoDB 字段的图像

转载 作者:可可西里 更新时间:2023-11-01 10:24:20 27 4
gpt4 key购买 nike

我正在以下列方式将图像存储在 MongoDB 中并尝试显示该图像,但是我在执行此操作时遇到了问题。我确定这取决于编码。

我在页面上的展示使用jinja2

<a src="image/png:base64, {{record.my_image | b64d}}">

b64d 是一个用于解码字符串字段的自定义过滤器。

from base64 import b64decode as b64decode
app.jinja_env.filters['b64d'] = lambda u: b64decode(u)

Mongo 中的字段如下所示:

"my_image": "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wB..."

我按照下面的方式转换图片,其中url是图片的url。

def ImgURL(url):
img = urllib.urlopen(url).read()
encoded_string = base64.b64encode(img)
return encoded_string

但是,当我尝试在 flask 中运行该页面时,我收到以下错误消息:

UnicodeDecodeError: 'ascii' codec can't decode byte 0x89 in position 0: ordinal not in range(128)

最佳答案

过滤器:

    from base64 import b64encode

app.jinja_env.filters['b64d'] = lambda u: b64encode(u).decode()

模板:

<img src="data:;base64,{{ record.my_image.thumbnail.read()|b64d }}">

假设,我的图片使用mongoengine的ImageField

其他需要使用 my_image.read()//不是缩略图

关于python - 在 flask 中显示来自 base64 编码的 MongoDB 字段的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35415483/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com