image resize question

Tim Arnold tim.arnold at sas.com
Fri Oct 19 09:03:30 EDT 2007


"Matimus" <mccredie at gmail.com> wrote in message 
news:1192741477.416784.279530 at t8g2000prg.googlegroups.com...
> On Oct 18, 11:56 am, "Tim Arnold" <tim.arn... at sas.com> wrote:
>> Hi, I'm using the Image module to resize PNG images from 300 to 100dpi 
>> for
>> use in HTML pages, but I'm losing some vertical and horizontal lines in 
>> the
>> images (usually images of x-y plots).
>>
>> Here's what I do:
>> import Image
>> def imgResize(self,filename):
>>         img = Image.open(filename)
>>         dpi = img.info.get('dpi')
>>         if dpi and 295 < int(dpi[0]) < 305:
>>             wd = img.size[0]/3.0 #convert from 300dpi to 100dpi
>>             ht = img.size[1]/3.0
>>             newimg= img.resize((int(wd),int(ht)))
>>             newimg.save(filename)
>>
>> imgResize('myimage.png')
>>
>> Can someone point me to a better way so I don't lose the reference lines 
>> in
>> the images?
>> thanks,
>> --Tim Arnold
>
> Resize accepts a second parameter that is used to determine what kind
> of downsampling filter to use (http://www.pythonware.com/library/pil/
> handbook/image.htm). The default is Image.NEAREST, which just samples
> the nearest pixel and results in the type of data loss you are seeing.
> If you want something better try one of the following and see which
> works best for you: Image.BILINEAR, Image.BICUBIC or Image.ANTIALIAS.
>
> example:
> ...
>    newimg = img.resize((int(wd),int(ht)),Image.ANTIALIAS)
> ...
>
> Matt

Thank you! The ANTIALIAS filter works great. With any of the others, I still 
lost my reference lines.
--Tim





More information about the Python-list mailing list