matplotlib 图像到 base64 而不保存
matplotlib image to base64 without saving
我正在用这段代码创建一个词云图像。
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)
If I just did this, would this accomplish my task?
data = base64.b64encode(wordcloud)
没有。您需要“保存”图像,获取字节流,并将 that 编码为 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()
我正在用这段代码创建一个词云图像。
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)
If I just did this, would this accomplish my task?
data = base64.b64encode(wordcloud)
没有。您需要“保存”图像,获取字节流,并将 that 编码为 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()