Je veux dégrader la qualité de l'image à quelques kilo-octets. Quelle est la meilleure façon de faire cela?Dans PIL de Python, comment changer la qualité d'une image?
Merci!
Je veux dégrader la qualité de l'image à quelques kilo-octets. Quelle est la meilleure façon de faire cela?Dans PIL de Python, comment changer la qualité d'une image?
Merci!
Si le format d'image est JPEG, voici un exemple:
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)
Les références dont vous avez besoin à lire sont:
Résolu.
Je l'ai fait ....
im.save(blah, quality=5)
'quality' est pour JPEG seulement, il est ignoré pour d'autres formats. – khachik
a) modifier la taille: Image.resize(size, filter)
b) convertir explicitement au format JPEG (si elle est pas) et définissez la qualité souhaitée. c) utiliser une combinaison de a) et b)
Quoi que vous fassiez, il y a un compromis entre taille et qualité.
Cela a fonctionné pour moi d'utiliser une boucle pour redimensionner des images en utilisant PIL. La variable PRODUITS est une liste qui avait tous les noms de produits en elle, mais vous pouvez également utiliser readlines() pour chaque ligne dans un fichier pour le faire:
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
PNG accepte un indicateur "optimiser". Vous devez vérifier les documents de chaque format d'image pour déterminer les indicateurs d'optimisation que vous pouvez utiliser. –
FWIW, l'OP n'est pas grand sur la lecture de la documentation - il a obtenu un S.O. – martineau
@martineau aussi FWIW, je trouve la documentation PIL assez inégale. IMX, vous ne pouvez pas vraiment pirater avec 'dir' /' help'/'doc' et obtenir des réponses aussi souvent que vous le souhaitez. De plus, par exemple remplacer 'png' par' jpg' dans le lien d'Asymptote donne un 404. –