2010-12-04 48 views

Respuesta

10

Si el formato de imagen es JPEG, he aquí un ejemplo:

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) 

Las referencias que necesita estar leyendo son:

  • [El módulo de imagen] [1], en particular el "guardar "función, que le permite pasar opciones relevantes para cada formato de imagen.
    • Las opciones de cada formato de imagen están en una página diferente, puede encontrarlo en los documentos.
+0

PNG acepta un indicador "optimizar". Debe verificar los documentos de cada formato de imagen individual para determinar qué indicadores de optimización puede usar. –

+1

FWIW, el OP no es muy bueno para leer la documentación, tiene S.O. – martineau

+0

@martineau también FWIW, encuentro que la documentación de PIL es bastante irregular. IMX, en realidad no puedes hackear con 'dir' /' help'/'doc' y obtener respuestas con la frecuencia que desees. Además, por ejemplo, reemplazar 'png' con' jpg' en el enlace de Asymptote produce un 404. –

1

Resuelto.

lo hice ....

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

'quality' es sólo para JPEG, se ignora para otros formatos. – khachik

1

a) cambiar el tamaño: Image.resize(size, filter) b) convertir explícitamente a JPEG (si no lo es) y establecer la calidad deseada. c) utilice una combinación de a) yb)

Hagas lo que hagas, hay una compensación entre el tamaño y la calidad.

0

Esto funcionó para mí utilizar un bucle para cambiar el tamaño de las imágenes usando PIL. Los productos variable es una lista que tenía todos los nombres de productos en ella, pero también se puede utilizar readlines() para cada línea en un archivo de hacerlo:

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 
Cuestiones relacionadas