如何在PyQt中将数组保存为图像

时间:2014-02-05 10:00:05

标签: python matplotlib pyqt

我正在PyQt中编写一个应用程序,在那里我用matplotlib显示一些图形。为此,我使用以下代码:

from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg
import matplotlib.figure as fig
self.IntFig = fig.Figure()
self.IntBeamCanvas = FigureCanvasQTAgg(self.IntFig)
self.AxesIntInit = self.IntFig.add_subplot(111)
self.AxesIntInit.hold(False)
self.AxesIntInit.imshow(self.Int,extent =[-xx/2+xx/N,xx/2,-xx/2+xx/N,xx/2])
self.IntBeamCanvas.draw()

稍后在代码中我设法保存使用以下代码创建的数字:

fname = QtGui.QFileDialog.getSaveFileName(self,'Save Intensity','C:' )
self.IntFig.savefig(str(fname))

但这只能保存数字(我的意思是它的轴)。如果我只想保存数据

,该怎么办?
self.Int

显示了什么?我知道pyplot.imsave方法,但不知道如何在这里使用它,因为我不使用pyplot而是图。图。

有没有人有想法?

1 个答案:

答案 0 :(得分:0)

您可以按照以下方法保存图像:

import numpy as np
import pylab as pl

y, x = np.ogrid[-1:1:50j, -1:1:100j]
z = np.sqrt(x*x + y*y)

im = pl.imshow(z)
img = im.make_image()
h, w, s = img.as_rgba_str()
a = np.fromstring(s, dtype=np.uint8).reshape(h, w, 4)
pl.imsave("tmp.png", a)

保存的图片:

enter image description here