问题描述
我正在使用此代码创建 wordcloud 图像。
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 显示图像,如下所示:
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
我将此用作网络应用程序的一部分。我想将此图像转换为 base64 并作为字符串存储为特定实例的字典键中的值。我看到很多关于如何将图像转换为 base64 的帖子,但看起来它们涉及在编码之前将图形保存在本地。如何在不保存任何地方的情况下执行此操作,以便我可以从图像转到字符串?
这段代码看起来有点像我想要的。
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')
如果我只是这样做,这能完成我的任务吗?
data = base64.b64encode(wordcloud)
解决方法
如果我只是这样做,这能完成我的任务吗?
data = base64.b64encode(wordcloud)
没有。您需要“保存”图像,获取该字节流,并将那个 编码为 base64。您不必将图像保存到实际文件中;您实际上可以使用缓冲区。
w = WordCloud().generate('Test')
buffer = io.BytesIO()
w.to_image().save(buffer,'png')
b64 = base64.b64encode(buffer.getvalue())
然后将其转换回来并显示图像
img = Image.open(io.BytesIO(base64.b64decode(b64)))
plt.imshow(img)
plt.show()