画像データを保存する(8bits)
numpy の ndarray で作成したデータを画像ファイルとして保存するコードを下記に示します。
ndarray から Pillow の Image.fromarray() を使ってデータ転送して、それを Pillow の機能で保存します。
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
w = 640
h = 480
numpix = w * h
# ubyte な1次元配列を確保する.
data = np.zeros( numpix, dtype=np.uint8)
#---------------------------------------------
# ななめウロコデータを格納する.
for j in range( h ):
adrs = w * j
for i in range( w ):
level = i + j
data[ adrs ] = level
adrs += 1
#---------------------------------------------
# 2次元配列に変換する、w と h の順に注目せよ.
data_2d = data.reshape( h, w )
# 2次元配列を画像データとして解釈する.
im = Image.fromarray( data_2d )
im.save( "c:/tmp/xxx_bpp08.bmp" )
# Matplotlib で画像を表示する.
plt.imshow( data_2d, cmap='gray')
plt.show()
print( "finish." )
下記のようなビットマップ画像データが c:/tmp/xxx_bpp08.bmp というファイルパスに配置されているはずです。