2014-02-05 21 views
0

我正在用PyQt編寫一個應用程序,其中我用matplotlib顯示了一些圖。要做到這一點,我使用下面的代碼:如何將數組作爲圖像保存在PyQt中

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,而是使用figure.Figure。

有沒有人有想法?

回答

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

+0

那不是我的初衷,但它的工作原理。我用pyplot代替pylab,正如我在我的問題中提到的那樣......我不知道爲什麼我第一次沒有這樣做。不管怎麼說,還是要謝謝你! –