Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在flask中显示base64编码的MongoDB字段中的图像_Python_Mongodb_Flask_Base64_Jinja2 - Fatal编程技术网

Python 在flask中显示base64编码的MongoDB字段中的图像

Python 在flask中显示base64编码的MongoDB字段中的图像,python,mongodb,flask,base64,jinja2,Python,Mongodb,Flask,Base64,Jinja2,我正在以以下方式在MongoDB中存储一个图像,并尝试显示该图像,但在执行此操作时遇到问题。我相信这是由于编码 使用jinja2在页面上显示我的内容 <a src="image/png:base64, {{record.my_image | b64d}}"> Mongo中的字段如下所示: "my_image": "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfG

我正在以以下方式在MongoDB中存储一个图像,并尝试显示该图像,但在执行此操作时遇到问题。我相信这是由于编码

使用
jinja2在页面上显示我的内容

<a src="image/png:base64, {{record.my_image | b64d}}">
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()//而不是缩略图

浏览器是否有责任解码b64数据?这就是为什么要在
src
标记中指定编码。@mgilson我在没有过滤器的情况下尝试过,但在屏幕上看不到任何呈现。
<img src="data:;base64,{{ record.my_image.thumbnail.read()|b64d }}">