[SciPy-user] toimage

Hi Maik
On Wed, Jun 07, 2006 at 11:42:08AM +0200, Maik Trömel wrote:
> i've got some problems creating a RGB-picture with "toimage".
> I have createt an array with integer values betweeen 0 and 4095.
> I tried with:
>> i = scipy.misc.toimage(arr, high = 0, low = 255, cmax=4095, cmin=0, pal=3, mode='P')
'pal' is the image colourmap. If you look at the toimage docstring,
it says:
For 2-D arrays, if pal is a valid (N,3) byte-array giving the RGB values
(from 0 to 255) then mode='P', otherwise mode='L', unless mode is given
as 'F' or 'I' in which case a float and/or integer array is made
For example, let's generate a square image that has a linear gradient:
import numpy as N
im = N.empty((100,100),dtype=N.Float)
im[:] = N.linspace(0,4096,100)
If you have matplotlib installed, you can view this using
import pylab as P
P.imshow(im,cmap=P.cm.gray)
To convert the array im to a PIL image, you can now do
I = scipy.misc.toimage(im,high=255,low=0,cmax=4095,cmin=0)
and display it using
I.show()
Now, if we'd like to change the colourmap, we'll have to generate one.
A colourmap is of shape (N,3), i.e. the RGB values for N indeces. The
following commands will generate a "cool" colourmap.
map = N.empty((256,3),dtype=N.uint8)
map[:,0] = N.arange(0,256,dtype=N.uint8)
map[:,1] = map[:,0][::-1]
map[:,2] = map[:,0] + map[:,1]
We create the PIL image using
I = scipy.misc.toimage(im,high=255,low=0,cmax=4095,cmin=0,pal=map,mode='P')
after which we can display it using
I.show()
Regards
Stéfan