无法在模板上呈现 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 图像的主要内容,如果未能解决你的问题,请参考以下文章
您可以将内联 base64 编码图像添加到 Mandrill 模板吗?
PIL.UnidentifiedImageError:无法识别图像文件 <_io.BytesIO 对象