Recientemente tuve problemas con un sitio ya que usaba muchas imagenes grandes que habian sido guardadas en una calidad muy alta sin considerar que el tiempo de descarga para los visitantes iba a ser muy alto. Usando la línea de comandos reduje la calidad de las imagenes sin que sea notorio el deterioro debido a la compresion. Lo mejor fue que imagenes de 1.5 Mb se redujeron a 250Kb, asi que los tiempos de descarga se volvieron razonables.
Aca esta el comando que lo hizo.
find . -name "*.jpg" -size +400k -print0 | xargs -0 -I file convert -quality 85 file file
Voy a explicar que hace cada bloque comenzando por el primero
find . -name "*.jpg" -size +400k -print0
Este comando busca todos los archivos jpg que tengan un tamaño mayor a 400k
xargs -0 -I file
xargs con esos parametros hace que el nombre del archivo que viene de la busqueda del bloque anterior se imprima donde yo ponga la palabra file
convert -quality 85 file file
convert guarda el archivo en el mismo lugar donde estaba con una calidad razonable (85)