PIL : How to write array to image ???

Martin Martin at Hvidberg.net
Sat Oct 3 19:30:13 CEST 2009


Dear group

I'm trying to use PIL to write an array (a NumPy array to be exact) to
an image.
Peace of cake, but it comes out looking strange.

I use the below mini code, that I wrote for the purpose. The print of
a looks like expected:

[[ 200.  200.  200. ...,    0.    0.    0.]
 [ 200.  200.  200. ...,    0.    0.    0.]
 [ 200.  200.  200. ...,    0.    0.    0.]
 ...,
 [   0.    0.    0. ...,  200.  200.  200.]
 [   0.    0.    0. ...,  200.  200.  200.]
 [   0.    0.    0. ...,  200.  200.  200.]]

But the image looks nothing like that.

Please see the images on:
http://hvidberg.net/Martin/temp/quat_col.png
http://hvidberg.net/Martin/temp/quat_bw.png

or run the code to see them locally.

Please – what do I do wrong in the PIL part ???

:-? Martin



import numpy as np
from PIL import Image
from PIL import ImageOps

maxcol = 100
maxrow = 100

a = np.zeros((maxcol,maxrow),float)

for i in range(maxcol):
    for j in range(maxrow):
        if (i<(maxcol/2) and j<(maxrow/2)) or (i>=(maxcol/2) and j>=
(maxrow/2)):
            a[i,j] = 200
        else:
            a[i,j] = 0

print a

pilImage = Image.fromarray(a,'RGB')
pilImage.save('quat_col.png')
pilImage = ImageOps.grayscale(pilImage)
pilImage.save('quat_bw.png')



More information about the Python-list mailing list