[Image-SIG] downscaling by area averaging

Fredrik Lundh fredrik at pythonware.com
Fri May 6 13:29:58 CEST 2005


> what kind of source images are you processing?

this is what happens when you don't click on all links in a
message ;-)

some observations:

+ the sample you used sure illustrates why PIL's BILINEAR and
  BICUBIC fixed-size kernel filters are not very good for down-
  sampling...

+ in case anyone wants to play with PIL's internal stretch filters,
  you can use the following little wrapper function:

    def stretch(im, size, filter=Image.NEAREST):
        im.load()
        im = im._new(im.im.stretch(size, filter))
        return im

  supported filters are Image.NEAREST, BILINEAR, and BICUBIC,
  in addition to ANTIALIAS (which is already exposed via the
  "resize" method).  unlike their resize counterparts, the stretch
  filters use an adaptive kernel size (the more you downsample,
  the larger the kernel)

+ as expected, NEAREST stretch isn't too far from your results, but
  it's not identical (and it probably shouldn't be)

+ I'm beginning to wonder if there's not an off-by-something error
  lurking somewhere in stretch.  hmm...

</F>





More information about the Image-SIG mailing list