python image library making dotty gifs

Steve Holden sholden at holdenweb.com
Fri Jun 25 14:32:27 CEST 2004


Alex Hunsley wrote:

> Alex Hunsley wrote:
> 
>> I'm using python image library 1.1.4 
>> (http://www.pythonware.com/products/pil/) to plot images.
>> However, when I save an image to a gif file, it comes out very 
>> dotty/ithered looking, even if it's a picture consisting only of one 
>> colour!
>>
>> Here's some example code that produces a dotty gif:
>>
>> #!/usr/bin/python
>>
>> # pymand joy!
>>
>> import Image
>> import ImageDraw
>>
>>
>> imageWidth=300
>> imageHeight=300
>>
>> im = Image.new("RGB", (imageWidth, imageHeight))
>>
>>
>> draw = ImageDraw.Draw(im)
>> for y in range (0,imageHeight):
>>     for x in range (0, imageWidth):
>>         draw.point((x, y), (128,128,128))
>>
>> # saving as a gif comes out dotty/dithered looking!
>> im.save("plotImage.gif", "GIF")
>>
>>
>> you can see the output gif here:
>>
>> http://ohmslaw.ogr.uk/plotImage.gif
> 
> 
> sorry, duff link, should be .org.uk:
> 
> http://ohmslaw.org.uk/plotImage.gif
> 
That's because PIL is storing the image as an indexed image, presumably 
using a palette that doesn't contain your exact color, and hence the 
software is dithering (that's a technical term, it doesn't mean the 
program can't make it's mind up ;-) to approximate the color you asked for.

Try using a color from the web-safe palette (google for it) or better 
still (even though the patents are now expired almost everywhere) use 
PNG instead.

regards
  Steve



More information about the Python-list mailing list