[Image-SIG] How to generate optimal palettes ?
chris at cogdon.org
Tue Aug 12 23:42:22 EDT 2003
Hi folks! Hoping someone can help me with this problem. I did search the
archives and it doesn't seem to have been covered in the past year.
I'm using PIL to generate thumbnails for my (rather large) artwork site. Using
the 'thumbnail' method seems to work fine except for reduced-palette GIF
images, where the resultant thumbnail looks all 'blocky'.
I determined that PIL is using the same low-colour palette as the input GIF,
whereas regenerating the palette to use more colours would return a
much-nicer-looking thumbnail. (Currently using ImageMagick, but I want to
I figure that I'll specialcase paletted files and write code such as the
im1 = Image.load ( image_path )
im2 = im1.convert ( 'RGB' )
im2.thumbnail ( (128,128), Image.ANTIALIAS )
im3 = im2.convert ( 'P' )
im3.save ( thumb_path )
However, in this case, a really ugly palette is chosen and the image is
visibly dithered. What I need is something that examines the image and
chooses an optimal palette. (Lots of graphics applications do this already)
Does anyone have any suitable code? Does it exist in PIL and I've just missed
it? How does one apply a palette when converting to 'P' mode ? Is it possible
to opt to NOT dither during the conversion ?
Thanks kindly for considering my problem.
I run a very heavily utilised community artwork site, with around 250,000
images, 3,500 artists, 4 million hits per day over two separated servers.
(Lots of test-fodder there, if people are interested :)
I was looking at PIL about 2.5 years ago, but found that 1.1.2 didn't support
anti-aliased resizing, which is criticial to me. Instead, I used PIL for
image mode detection, but ImageMagick to generate the thumbnails. This is
both slow (calling an external program) and error prone (every upgrade to
ImageMagick has broken something or another, and calling external scripts can
play havoc with special characters in filenames). I'd LOVE to come back to
PIL, but I have a few niggly problems to sort out, such as above, before I
make the switch.
I'm very happy to run test code over the image collection, if someone wants to
feed me beta code :)
PS: A hello to those also on db-sig :)
("`-/")_.-'"``-._ Chris Cogdon <chris at cogdon.org>
. . `; -._ )-;-,_`)
(v_,)' _ )`-.\ ``-'
_.- _..-_/ / ((.'
((,.-' ((,/ fL
More information about the Image-SIG