首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将matplotlib图像转换为base64而不保存

问将matplotlib图像转换为base64而不保存
EN

Stack Overflow用户
提问于 2021-02-22 22:35:31
回答 1查看 1.2K关注 0票数 0

我正在用这段代码创建一个字云映像。

代码语言:javascript
复制
       wordcloud = WordCloud(
            background_color='white',
            random_state=30,
            width=1500,
            height=1200,
            font_path = font_path,
            prefer_horizontal=1)
        wordcloud.generate_from_frequencies(frequencies=d)

我用matplotlib显示的图像如下所示:

代码语言:javascript
复制
        plt.imshow(wordcloud)
        plt.axis('off')
        plt.show()

我使用这个作为一个网络应用程序的一部分。我希望将此映像转换为base64,并将其作为字符串存储为特定实例的字典键中的值。我看到了很多关于如何将图像转换为base64的文章,但是看起来它们需要在编码之前在本地保存图像。如何在不保存任何地方的情况下做到这一点,这样我就可以从图像转到字符串?

这段代码看起来有点像我想要的。

代码语言:javascript
复制
import base64
from PIL import Image
from io import BytesIO

with open("image.jpg", "rb") as image_file:
    data = base64.b64encode(image_file.read())

im = Image.open(BytesIO(base64.b64decode(data)))
im.save('image1.png', 'PNG')

如果我这样做了,这能完成我的任务吗?

代码语言:javascript
复制
data = base64.b64encode(wordcloud)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-22 23:18:21

,如果我这样做了,它会完成我的任务吗?

data = base64.b64encode(wordcloud)

不是的。您需要“保存”映像,获取字节流,并将其编码为base64。您不必将图像保存到实际文件中;您实际上可以使用缓冲区。

代码语言:javascript
复制
w = WordCloud().generate('Test')
buffer = io.BytesIO()
w.to_image().save(buffer, 'png')
b64 = base64.b64encode(buffer.getvalue())

并将其转换回并显示图像

代码语言:javascript
复制
img = Image.open(io.BytesIO(base64.b64decode(b64)))
plt.imshow(img)
plt.show()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66324439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档