Quiero degradar la calidad de la imagen a algunos kilobytes. ¿Cuál es la mejor manera de hacer esto?En el PIL de Python, ¿cómo cambio la calidad de una imagen?
Gracias!
Quiero degradar la calidad de la imagen a algunos kilobytes. ¿Cuál es la mejor manera de hacer esto?En el PIL de Python, ¿cómo cambio la calidad de una imagen?
Gracias!
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:
Resuelto.
lo hice ....
im.save(blah, quality=5)
'quality' es sólo para JPEG, se ignora para otros formatos. – khachik
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.
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
PNG acepta un indicador "optimizar". Debe verificar los documentos de cada formato de imagen individual para determinar qué indicadores de optimización puede usar. –
FWIW, el OP no es muy bueno para leer la documentación, tiene S.O. – martineau
@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. –