2017-07-05 13 views
1

このPythonプログラムを作成して、行列(2D配列)を作成して.pngファイルに保存しました。プログラムはコンパイルされ、エラーなく実行されます。 IMAGE.pngファイルも作成されますが、pngファイルは開かれません。 MSPaintで開こうとすると、次のように表示されます。2D配列を色付きの.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

あなたのコードは、あなたが画像を保存しようとしているのを知らないので、あなたのコードは動作しません - あなたが配列を書き出すバイナリファイルだけが表示されます - '.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()this questionごとに、軸や空白を削除するには、各種の中interpolationexamples here)関心のパラメータ、およびcmap(カラーマップ)

があります

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

がありません。画像を保存するには、スケーリング、色の再現、境界線に遭遇するので、一般的に画像を保存するのは悪い方法です。このために 'matplotlib ' 、重複した質問 – Eric

+0

@エリックで私の答えを削除します –

関連する問題