无法在模板上呈现 PIL 对象 base64 图像

Posted

技术标签:

【中文标题】无法在模板上呈现 PIL 对象 base64 图像【英文标题】:Unable to render PIL object base64 image on template 【发布时间】:2018-09-03 06:14:12 【问题描述】:

我试图在转换为 base64 后显示一个 PIL 对象。 我在 src 标记中获得了 base64 值,但即使在解码后也没有呈现响应

import base64
import io
def newrules(request):
pic = con(select.fname)
print(pic)
buffered = io.BytesIO()
pic.save(buffered, "PNG")
img_str = base64.b64encode(buffered.getvalue())
template_code = """
% load static %
<!DOCTYPE html>
<html>
<body>
% block pagecontent %
<div>
<img src="data:image/png;base64, img_str ">
</div>
<div>
 img_str 
</div>
</body>
% endblock %
</html>
"""
template = engines['django'].from_string(template_code)
return HttpResponse(template.render(context='img_str': img_str))

HTML souce code

terminal API call responses

Template rendered

我们将不胜感激。

【问题讨论】:

How do you base-64 encode a PNG image for use in a data-uri in a CSS file?的可能重复 在副本中查看我的 Python3 答案 - 基本上你需要通过 img_str = base64.b64encode(buffered.getvalue().decode()str 而不是 bytes 传递给模板引擎。 【参考方案1】:

base64.b64encode(buffered.getvalue()) 返回一个字节类对象。在将其传递给模板之前,需要将其转换为字符串。可以这样做:

img_str = base64.b64encode(buffered.getvalue()).decode('ascii')

【讨论】:

以上是关于无法在模板上呈现 PIL 对象 base64 图像的主要内容,如果未能解决你的问题,请参考以下文章

MiniMagick无法编写解码的Base64图像

您可以将内联 base64 编码图像添加到 Mandrill 模板吗?

PIL.UnidentifiedImageError:无法识别图像文件 <_io.BytesIO 对象

PIL.Image与Base64 String的互相转换

base64 嵌入式 PDF 文件不会在 Chrome 中呈现

骨刻文字数字化识别与归类系统--PIL,opencv,base64之间的转换