[PIL] 16 / 48 bit images?

ingo ingoogni at home.nl
Thu Feb 8 20:44:27 CET 2001


Using PIL with 16 bit greyscale images I'm struggeling a 'bit'. How does 
PIL work with 16/48 bit images?

>>> import Image
>>> im=Image.open("a1.png")
>>> len(im.histogram())
256
>>>
Here I expected the result to be 65536. Is the histogram fixed to 256 
levels (per band), or is the image converted to 8 bit?

When using the point() operation on a 16 bit greyscale image I get an 
error, the same operation on an 8 bit image is flawless. When done to one 
band of a 48 bit image all seems to be ok, bu the mode of the band is "L". 
Is the band converted to 8 bit?

>>> im=Image.open("a1.png")  #16 bit greyscale
>>> im.mode
'I'
>>> mask=im.point(lambda i: i<100 and 255)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "d:\programming\python20\pil\Image.py", line 582, in point
    scale, offset = _getscaleoffset(lut)
  File "d:\programming\python20\pil\Image.py", line 271, in 
_getscaleoffset
    data = expr(_E(stub)).data
AttributeError: 'int' object has no attribute 'data'
>>>

>>> im=Image.open("a2.png")    	#8 bit greyscale
>>> im.mode
'P'
>>> mask=im.point(lambda i: i<100 and 255)
>>>

>>> im=Image.open("a3.png")    	#48 bit colour
>>> im.mode
'RGB'
>>> S=im.split()
>>> R,G,B=0,1,2
>>> S[R].mode
'L'
>>> mask=S[R].point(lambda i: i<100 and 255)
>>>

Ingo

-- 
Photography: http://members.home.nl/ingoogni/
Pov-Ray    : http://members.home.nl/seed7/



More information about the Python-list mailing list