Quiero comprimir un archivo de imagen JPG con ImageMagick pero no puedo obtener mucha diferencia de tamaño. Por defecto, el tamaño de salida es mayor que la entrada. No sé por qué, pero después de agregar algunas opciones de perfil + y establecer la calidad, puedo obtener un tamaño más pequeño pero similar al original.
La imagen de entrada es 255kb, la imagen procesada es 264kb (usando + perfil para eliminar perfiles y configurando la calidad al 70%). ¿Hay alguna forma de comprimir esa imagen al menos a 150 kb? ¿Es eso posible? ¿Qué opciones de ImageMagick puedo usar?
image-processing
imagemagick
Javis Perez
fuente
fuente
Respuestas:
Yo uso siempre:
en imagemagick debería ser
o en la versión más nueva:
Espero que esto sea útil.
Enlace fuente: http://www.yuiblog.com/blog/2008/12/05/imageopt-4/
De @Fordi en los comentarios (no olvides aprobar su comentario si lo deseas): si no te gusta el desenfoque, úsalo en su
-sampling-factor 4:2:0
lugar. Lo que esto hace es reducir la resolución del canal de croma a la mitad, sin interferir con la resolución de luminancia a la que se adhieren los ojos. Si desea una mejor fidelidad en la conversión, puede obtener una ligera mejora sin un aumento en el tamaño del archivo al especificar-define jpeg:dct-method=float
, es decir, usar la transformación de coseno discreto de coma flotante más precisa, en lugar de la versión entera rápida predeterminada.fuente
mogrify -strip -interlace Plane -gaussian-blur 0.05 -quality 85% *.jpg
. Asegúrese de tener una copia de seguridad antes de ejecutar ese comando. Se escribirá en su lugar.-strip
Lo hice por mí. Graciasmogrify -strip -quality 75% *.jpg
. Strip es genial. 0 pérdida de calidad y grandes ahorros de espacio. Y la calidad al 75% apenas se distingue del 100%, pero ocupa la mitad del espacio.Estoy usando las pautas de optimización de imagen de Google Pagespeed Insights , y para ImageMagick recomiendan lo siguiente:
-muestreo-factor 4: 2: 0
-strip
-quality 85 [puede variar, uso el rango 60-80, un número menor aquí significa un archivo más pequeño]
-interlace
-colorspace RGB
Comando en ImageMagick:
Con estas opciones obtengo hasta un 40% de ahorro en tamaño JPEG sin mucha pérdida visible.
fuente
Solo digo para aquellos que usan la clase Imagick en PHP:
fuente
Una vez que necesitaba cambiar el tamaño de las fotos de la cámara para desarrollarlas:
Mando:
y no puedo ver ningún cambio en pantalla completa con mi monitor de resolución 1920x1080. La resolución 2048 es la mejor para desarrollar fotos de 10 cm con una calidad máxima de 360 ppp. No quiero desnudarlo.
editar: noté que incluso obtengo resultados mucho mejores sin desenfoque. Sin desenfoque, el tamaño del archivo es del 50% del original, pero la calidad es mejor (al hacer zoom).
fuente
Agregaría una nota lateral útil y una sugerencia general para minimizar JPG y PNG.
En primer lugar, ImageMagick lee (o mejor "adivina" ...) el nivel de compresión jpeg de entrada y, por lo tanto, si no agrega
-quality NN
nada, la salida debe usar el mismo nivel que la entrada. A veces podría ser una característica importante. De lo contrario, el nivel predeterminado es-quality 92
(ver www.imagemagick.org )La sugerencia es sobre una herramienta gratuita realmente increíble ImageOptim , también para el proceso por lotes.
Puede obtener jpgs más pequeños (y pngs también, especialmente después del uso del ImageAlpha [proceso no por lotes] gratuito o el Pngyu gratuito si necesita un proceso por lotes).
No solo, estas herramientas son para Mac y Win y como línea de comando (sugiero instalar usando Brew y luego buscar en las fórmulas Brew).
fuente
Agregué
-adaptive-resize 60%
al comando sugerido, pero con-quality 60%
.Estos fueron mis resultados
No estoy seguro de si esa conversión destruye mi imagen demasiado, pero honestamente no pensé que mi conversión parecía una mierda. Era un panorama de gran angular y no me importaba la obstrucción meticulosa.
fuente
Consulte los siguientes enlaces donde hay una opción en ImageMagick para especificar el tamaño de archivo de salida deseado para escribir en archivos JPG.
http://www.imagemagick.org/Usage/formats/#jpg_write http://www.imagemagick.org/script/command-line-options.php#define
-define jpeg:extent={size} As of IM v6.5.8-2 you can specify a maximum output filesize for the JPEG image. The size is specified with a suffix. For example "400kb".
Perderá algo de calidad al descomprimir y volver a comprimir, además de cualquier pérdida debido a la disminución del valor de calidad de la entrada.
fuente
Experimenté un poco aquí y el chico hace que el desenfoque gausiano sea diferente. El comando final que utilicé fue:
mogrify * -sampling-factor 4: 2: 0 -strip -quality 88 -interlace Plane -define jpeg: dct-method = float -colorspace RGB -gaussian-blur 0.05
Sin el desenfoque gausiano a 0.05 era de alrededor de 261 kb, con alrededor de 171 KB para la imagen que estaba probando. La diferencia visual en un monitor de 1440p con una imagen compleja grande no se nota hasta que se acerca mucho.
fuente
Aquí hay una solución completa para aquellos que usan Imagick en PHP:
fuente
Si la imagen tiene grandes dimensiones es difícil obtener buenos resultados sin cambiar el tamaño, a continuación se muestra un cambio de tamaño del 60 por ciento que, para la mayoría de los propósitos, no destruye demasiado la imagen.
Lo uso con buenos resultados para imágenes en escala de grises (convierto de PNG):
Lo uso para las páginas escaneadas en blanco y negro para obtener imágenes en escala de grises (los argumentos adicionales limpian las sombras de las páginas anteriores):
Lo uso para imágenes en color:
fuente