programa - PHP: ¿Cómo comprimir imágenes sin perder la calidad visible(automáticamente)?
programa para comprimir imagenes sin perder calidad (1)
Me pregunto cómo calcular la mejor tasa de compresión (tamaño de archivo pequeño + sin pérdida de calidad) automáticamente.
En este momento estoy usando imagejpeg() con $quality = 85
para cada .jpg
.
PageSpeed (Chrome Plugin) sugiere, para reducir la calidad de algunas imágenes para guardar algunos kb. El porcentaje de reducción es diferente.
Me gustaría escribir un cronjob que rastrea un directorio específico y optimiza cada imagen.
¿Cómo es que PageSpeed o TinyPNG la mejor calidad optimizada? ¿Es esto posible con PHP u otro lenguaje del servidor?
TinyPNG utiliza pngquant .
Pngquant tiene la opción de establecer la calidad deseada, similar a JPEG. Puedes ejecutar algo como:
<?php system(''pngquant --quality=85 image.png''); ?>
El sitio web de Pngquant tiene un código de ejemplo que muestra cómo usar pngquant desde PHP .
Para JPEG puedes aplicar jpegcrush sin jpegcrush .
JpegMini (comercial) y jpeg-archive (gratis) tienen pérdidas y pueden encontrar automáticamente una buena calidad mínima para un JPEG.
En PHP, puede estimar aproximadamente cuánto JPEG se comprimió observando cuánto cambia el tamaño del archivo después de la compresión. El tamaño del archivo de JPEG recomprimido con la misma o mayor calidad no cambiará mucho (pero perderá calidad visual).
Si vuelve a comprimir JPEG y ve que el tamaño del archivo se reduce a la mitad, entonces mantenga la versión recomprimida. Si ve solo una caída del 10-20% en el tamaño del archivo, entonces conserve el original.
Si se está comprimiendo, use MozJPEG (aquí hay una versión en línea ).