proyectos ejemplos python image compression python-imaging-library

python - ejemplos - django



Cómo reducir el tamaño del archivo de imagen usando PIL (3)

Estoy usando PIL para cambiar el tamaño de las imágenes allí mediante la conversión de imágenes más grandes a las más pequeñas. ¿Hay alguna forma estándar de reducir el tamaño del archivo de la imagen sin perder demasiado la calidad, digamos que el tamaño original de la imagen es de 100 KB, quiero bajarlo a 5 o 10 KB, especialmente para los formatos png y jpeg.


Vea la función de thumbnail del Módulo de imagen de PIL. Puede usarlo para guardar versiones más pequeñas de archivos como varios tipos de archivos y si desea conservar la mayor calidad posible, considere usar el filtro ANTIALIAS cuando lo haga.

Aparte de eso, no estoy seguro de si hay una forma de especificar el tamaño máximo deseado. Por supuesto, podría escribir una función que podría intentar guardar varias versiones del archivo con diferentes calidades hasta que se cumpla un determinado tamaño, descartando el resto y dándole la imagen que deseaba.


digamos que tiene un modelo llamado Libro y en él un campo llamado ''cover_pic'', en ese caso, puede hacer lo siguiente para comprimir la imagen:

from PIL import Image b = Book.objects.get(title=''Into the wild'') image = Image.open(b.cover_pic.path) image.save(b.image.path,quality=20,optimize=True)

Espero que ayude a cualquiera que se tropiece con eso.


Se optimize parámetro incorporado para guardar archivos JPEG y PNG.

>>> from PIL import Image # My image is a 200x374 jpeg that is 102kb large >>> foo = Image.open("path//to//image.jpg") >>> foo.size (200,374) # I downsize the image with an ANTIALIAS filter (gives the highest quality) >>> foo = foo.resize((160,300),Image.ANTIALIAS) >>> foo.save("path//to//save//image_scaled.jpg",quality=95) # The saved downsized image size is 24.8kb >>> foo.save("path//to//save//image_scaled_opt.jpg",optimize=True,quality=95) # The saved downsized image size is 22.9kb

La bandera de optimize hará un pase adicional en la imagen para encontrar la manera de reducir su tamaño tanto como sea posible. 1.9kb puede no parecer mucho, pero a lo largo de cientos / miles de imágenes, puede sumar.

Ahora, para intentar bajarlo a 5 kb a 10 kb, puede cambiar el valor de calidad en las opciones de guardado. Usar una calidad de 85 en lugar de 95 en este caso arrojaría lo siguiente: No optimizado: 15.1kb Optimizado: 14.3kb Usar una calidad de 75 (por defecto si el argumento no aparece) produciría: No optimizado: 11.8kb Optimizado: 11.2kb

Prefiero la calidad 85 con optimización porque la calidad no se ve muy afectada y el tamaño del archivo es mucho menor.