开发者

In Python's PIL, how do I change the quality of an image? [closed]

开发者 https://www.devze.com 2023-01-28 16:34 出处:网络
Closed. This question needs to be more focused. It is not currently accepting answers. 开发者_如何转开发
Closed. This question needs to be more focused. It is not currently accepting answers.
开发者_如何转开发

Want to improve this question? Update the question so it focuses on one problem only by editing this post.

Closed 7 years ago.

Improve this question

I want to degrade the quality of the image to a few kilobytes. What's the best way to do this?

Thanks!


If the picture format is JPEG, here's an example:

from PIL import Image
im = Image.open("C:\Users\Public\Pictures\Sample Pictures\Jellyfish.jpg")
im.save("C:\Users\Public\Pictures\Sample Pictures\Jellyfish_compressed.jpg", quality=10)

The references you need to be reading are:

  • [The Image module][1], particularly the "save" function, which allows you to pass in options relevant for each image format.
    • Each image format's options are in a different page, you can find it in the docs.


Solved.

I did....

im.save( blah, quality=5)


a) change the size: Image.resize(size, filter) b) explicitly convert it to JPEG (if it is not) and set the desired quality. c) use a combination of a) and b)

Whatever you do, there is a trade-off between size and quality.


This worked for me to use a For Loop to resize images using PIL. The variable PRODUCTS is a list that had all product names in it, but you can also use readlines() for each line in a file to do so:

def resize_images(self):
    products = PRODUCTS
    for name in products:
        try:
            fp = open(filename + name + ".jpg", "rb")
            img = Image.open(fp)
            img.load()
            img.save(filename + name + "_2" + ".jpg", quality=23)
            fp.close()
        except:
            print name 
0

精彩评论

暂无评论...
验证码 换一张
取 消