2017-07-05 33 views
1

我編寫了這個Python程序來創建並保存一個矩陣(二維數組)到一個.png文件。該程序編譯和運行沒有任何錯誤。即使IMAGE.png文件被創建,但png文件也不會打開。當我嘗試在MSPaint中打開它時,它會顯示:用顏色以.png格式存儲2D數組

無法打開圖像。目前不支持有效的位圖文件或其格式。

我的目標是創建一個基於存儲在二維數組中的數字的RBG PNG圖像。

源代碼:

import numpy; 
    import png; 

    imagearray = numpy.zeros(shape=(512,512)); 

    /* Code to insert one '1', '2', '3' in certain locations 
     of the numpy 2D Array. Rest of the location by default stores zero '0'.*/ 


    f = open("IMAGE.png", 'wb'); 
    f.write(imagearray); 
    f.close(); 

我不明白的地方我去錯了,因爲沒有錯誤消息。請幫忙。

PS-我只是想將矩陣保存爲圖像文件,所以如果您在Python2.7中有更好更簡單的方法,建議使用。

+1

請不要在python中使用分號,這是沒有必要的。另外,你的代碼是過度縮進的。 –

+0

你的代碼不起作用,因爲python不知道你正在嘗試保存一個圖像 - 它看到的只是一個二進制文件,你要寫一個數組到--.png只不過是文件名的一部分。一個有效的PNG文件需要一個頭文件,你創建的文件沒有這個頭文件 – Eric

回答

2

用matplotlib繪製圖像並保存。

import matplotlib.pyplot as plt 
import numpy as np 
a = np.random.uniform(size=(25, 25, 3)) # random 3D array 
plt.imshow(a) 
plt.savefig("img.png") 

imshow()有利益的各種參數,其中包括該interpolationexamples here)和cmap(顏色表)

要刪除軸和空格,按this question

plt.axis('off') 
plt.savefig("img.png", bbox_inches='tight') 
+0

這通常是保存圖像的一種不好的方法,因爲它不適合縮放,重新着色和邊框 - 「matplotlib」中有更好的解決方案,在重複問題 – Eric

+0

@Eric所以我會刪除我的答案 –