2010-12-04 32 views

Répondre

10

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:

  • [Le module d'image] [1], en particulier les « sauver "fonction, qui vous permet de passer dans les options pertinentes pour chaque format d'image.
    • Les options de chaque format d'image sont dans une page différente, vous pouvez le trouver dans les documents.
+0

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. –

+1

FWIW, l'OP n'est pas grand sur la lecture de la documentation - il a obtenu un S.O. – martineau

+0

@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. –

1

Résolu.

Je l'ai fait ....

im.save(blah, quality=5) 
+2

'quality' est pour JPEG seulement, il est ignoré pour d'autres formats. – khachik

1

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é.

0

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