3

我正在尝试将数字保存到内存流中,就像在 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# 中使用的字节数组。

4

1 回答 1

1

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

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

从文档中:

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

于 2013-04-04T16:11:23.267 回答