Matplotlib保存到BytesIO略有错误?

时间:2012-09-25 06:12:18

标签: c# python matplotlib

我正在尝试将数字保存到内存流中,与SO上的另一个示例完全相同:

import matplotlib.pyplot as plt
import io


plt.figure()
plt.plot([1, 2])
plt.title("test")
buf = io.BytesIO()
plt.savefig(buf, format = 'png')
plt.savefig("real.png", format = 'png')
buf.seek(0)
data = buf.read()
buf.close()
f = open('copy.png', 'w')
f.write(data)
f.close()

我发现copy.png的大小略大,应用程序拒绝打开它。这是某种编码问题吗?

背景

我正在尝试使用python.net使用matplotlib渲染图形并将它们传递给C#进行绘制。我想避免将图像写入磁盘。理想情况下,我想写一些我可以在C#中使用的字节数组。

1 个答案:

答案 0 :(得分:1)

尝试以二进制模式打开文件。

f = open('copy.png', 'wb')

来自文档:

  

Windows上的Python区分了文本和二进制文件;   文本文件中的行尾字符会自动更改   稍微读取或写入数据时。这个幕后花絮   修改文件数据适用于ASCII文本文件,但它会   损坏的二进制数据,如JPEG或EXE文件中的数据。要非常小心   在读写这些文件时使用二进制模式。