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

时间:2018-03-24 19:12:43

标签: html django python-3.x base64 python-imaging-library

我正在尝试在转换为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

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

base64.b64encode(buffered.getvalue())返回一个字节类对象。需要先将其转换为字符串,然后再将其传递给模板。可以完成以下操作:

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