Hi all,

Just started using PIL.  I'm attempting to resize a .gif image to a smaller
size, keeping the height/width proportional.  The resize works, but the
resulting image is very grainy.  Resizing the same image with ImageMagick's
convert utility produced a far better quality image.  I'd rather use PIL if
possible since it has a much better API.  Am I missing something?

    from PIL import Image

    # original_content is a string of bytes representing the image.
    # the image is not stored locally on disk, so it's fetched from the
storage service as a string
    # and loaded up using a StringIO buffer
    # Have also tried loading the same .gif from a local disk directly with
Image.open('filename.gif'), but image after resize looked grainy as well
    io = StringIO(original_content)
    pil_image = Image.open(io)

    # docs suggest that the default mode, 'P', won't use the ANTIALIAS
filter, so switch to RGB
    pil_image = pil_image.convert('RGB')


    # ... stuff happens here to figure out what the new width and height
should be

    # tuple representing the new size
    new_size = (new_width, new_height)

    # the actual resize...
    pil_image = pil_image.resize(new_size, Image.ANTIALIAS)

    # save the new image back out to a StringIO buffer -- has to be sent
back to the storage service
    io = StringIO()
    format = 'GIF'   # hardcoded in this example
    pil_image.save(io, format)



Thanks for any help possible.
_______________________________________________
Image-SIG maillist  -  Image-SIG@python.org
http://mail.python.org/mailman/listinfo/image-sig

Reply via email to