Marijus
Marijus

Reputation: 4375

Python PIL thumbnail with Image.ANTIALIAS. How to preserve quality

I'm trying to resize images while keeping aspect ratio. I use PIL's thumbnail method for this. I use Image.ANTIALIAS filter.

You can check my code here:

image = Image.open(design.design.path)
format = image.format
image = ImageOps.mirror(image)
new_size = (241, 241)
image.thumbnail(new_size, Image.ANTIALIAS)
image.save(response, format)

This code works perfectly however quality is lost after thumbnail. I can see it by zooming in on the saved image. I can see pixels at the corners of the image while I don't on the original image. This is seen even better when I print out resized image.

You can check out sample images here: https://i.sstatic.net/CqF6D.jpg

Please tell me if you need anything else

Upvotes: 6

Views: 19247

Answers (2)

Farshid Ashouri
Farshid Ashouri

Reputation: 17711

Image.save has options for you:

img.save(fpath, 'image/png', quality=100, optimize=True) 

Upvotes: 3

jsbueno
jsbueno

Reputation: 110476

If you are making thumbnails of a pixel-based image, of course you will loose quality. Re-sizing this kind of image (as opposed to vector images) simply throw information away - there is no way to recover it.

IF you need to view the image in full size, you have to preserve the original image, and keep the scaled-down version to be shown only where it is needed - use the original for everything else.

https://en.wikipedia.org/wiki/Raster_graphics

Upvotes: 2

Related Questions