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.Cómo reducir el tamaño del archivo de imagen usando PIL
Respuesta
Consulte la función 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.
hay una manera de reducir el tamaño del archivo al mantener las dimensiones constantes esp. para formatos png. –
Si desea mantener las mismas dimensiones, la única otra cosa que puede probar es establecer la configuración de calidad cuando guarde la imagen. Consulte [esta respuesta] (http://stackoverflow.com/a/1405701/369878) – Cryptite
, pero el atributo de calidad no hace diferencia para los formatos png. Aunque cambie la calidad, el tamaño del archivo permanece igual. –
Un parámetro incorporado para guardar archivos JPEG y PNG es optimize
.
# 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 optimize
hará un pase extra en la imagen para encontrar una 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 tratar de bajarlo a 5 kb a 10 kb, puede cambiar el valor de calidad en las opciones de guardado. Usando una calidad de 85 en lugar de 95 en este caso sería Rendimiento: no optimizado: 15.1kb optimizada: 14.3kb Usando una calidad de 75 (por defecto si el argumento se deja fuera) produciría: no optimizado: 11.8kb optimizada: 11.2kb
Prefiero la calidad 85 con optimizar porque la calidad no se ve muy afectada, y el tamaño del archivo es mucho menor.
Digamos que tiene un modelo llamado libro y en él un campo llamado 'cover_pic', en ese caso, se 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 de tropiezo sobre eso
- 1. Cómo reducir el tamaño del archivo de imagen en java
- 2. Cómo obtener el tamaño de imagen (bytes) usando PIL
- 3. Android - Reducir el tamaño del archivo de imagen
- 4. Reducir el tamaño del archivo de pdf
- 5. Reducir el tamaño del archivo jar externo
- 6. PIL cómo escalar el tamaño del texto en relación con el tamaño de la imagen
- 7. Cómo reducir el tamaño del archivo de audio en IOS
- 8. Reducir el tamaño de la imagen C#
- 9. Cómo reducir el tamaño del archivo Eclipse PDOM?
- 10. Cómo reducir el tamaño de imagen JPEG en Android
- 11. py2exe: Reducir el tamaño del archivo de la biblioteca
- 12. Crear miniaturas y reducir el tamaño de la imagen
- 13. cómo reducir el tamaño de UIImage ...?
- 14. ¿Cómo cambio el tamaño de una imagen usando PIL y mantengo su relación de aspecto?
- 15. Contorno de imagen usando python/PIL
- 16. PIL Image.resize() no cambiar el tamaño de la imagen
- 17. Reducir el tamaño del repositorio git
- 18. Android reducir el tamaño de imagen de cámara
- 19. Cómo reducir el tamaño del PDF generado por BIRT con la imagen de fondo?
- 20. comprimir el tamaño del archivo de imagen al cargarlo?
- 21. Cómo reducir la paleta de colores con PIL
- 22. Cómo reducir el tamaño de RTF con imágenes incrustadas?
- 23. jQuery fullcalendar - cómo reducir el tamaño del calendario
- 24. Cómo reducir el tamaño del gráfico circular KendoUI?
- 25. Recortar la imagen usando PIL en python
- 26. ¿Cómo se usa PIL para cambiar el tamaño y aplicar información EXIF de rotación al archivo?
- 27. cómo reducir el tamaño de la imagen grande al tamaño de la miniatura en android
- 28. ¿Cómo puedo determinar el tamaño exacto del archivo de imagen PE usando su encabezado (s)?
- 29. Cómo reducir el tamaño de std :: vector?
- 30. Cómo reducir el tamaño de la imagen de recorte en el iphone?
¿Qué define como pérdida de calidad "excesiva"? Si desea reducir el tamaño del archivo en un factor de 10 a 20, la manera más fácil es reducir la cantidad de píxeles. Reducir el ancho y la altura en 2/3 le daría una imagen de aproximadamente 1/9 del tamaño del original. Pero esa es una gran cantidad de resolución que pierdes. –