[Image-SIG] colorshift while converting png to gif
hgerlach at compals.com
Wed Feb 9 14:34:07 CET 2005
> I get a similar problem with the following complete program:
> import Image
> i = Image.fromstring("RGB", (1, 1), chr(255) * 3)
> j = i.convert("P")
> print j.getpixel((0,0)) # prints 252, should print 255
>This seems to have something to do with converting to a palette image.
You are right, the "problem" is is with the palette. The way we invoke convert
it uses the default palette. The entry #252 = (252,252,252) is the entry
closest to white that it contains (there are only 255 entries at all).
The trick is to tell the convert method to use an adaptive palette, i. e. call
palette_im = im.convert("P", palette=Image.ADAPTIVE).
palette_im.getpixel((0,0)) will return #0 in your example, because there will
be only one entry in the palette which is #0 = (255,255,255).
Thanks again Jeff, for pointing out it's a problem with the palette. And
thanks to PIL people for their great product and access to the source, so the
hidden APIs could be found....
More information about the Image-SIG