Python 3图像base64而不保存到html img标签

Posted

技术标签:

【中文标题】Python 3图像base64而不保存到html img标签【英文标题】:Python 3 image base64 without saving into html img tag 【发布时间】:2018-10-31 05:37:48 【问题描述】:

我想创建一个图像(不将其保存到磁盘),并在浏览器中显示它。据我所知,我必须创建一个 base64 图像,但我不知道如何制作它。

你能帮帮我吗?

这是我的代码:

from PIL import Image, ImageDraw
import base64

im = Image.new('RGBA', (200, 100),  color = 'black')
data_uri = #missing how I can convert the image to base64 ?

html = '<html><head></head><body>'
html += '<img src="data:image/png;base64,0">'.format(data_uri)
html += '</body></html>'

print (html)

【问题讨论】:

【参考方案1】:

您需要将图像转换为正确的格式(在这种情况下为 PNG)作为缓冲区并在之后编码缓冲区。

from PIL import Image, ImageDraw
import base64
import io

im = Image.new('RGBA', (200, 100),  color = 'black')

buffer = io.BytesIO()
im.save(buffer, format='PNG')
buffer.seek(0)

data_uri = base64.b64encode(buffer.read()).decode('ascii')

html = '<html><head></head><body>'
html += '<img src="data:image/png;base64,0">'.format(data_uri)
html += '</body></html>'

print (html) 

【讨论】:

以上是关于Python 3图像base64而不保存到html img标签的主要内容,如果未能解决你的问题,请参考以下文章

使用 python 3.7.3,我想要 base64 编码的照片并调整它的大小而不保存到文件到磁盘并使用 Image.open() 重新打开文件

在 JavaScript 中调整 Base-64 图像的大小而不使用画布

如何在python flask服务器中保存base64镜像

在 HTML 电子邮件中发送 base64 图像

将 base64 编码图像保存到 Firebase 存储

如何将 base64 编码的图像保存到磁盘?