¿Herramientas para la optimización de JPEG? [cerrado]

114

¿Conoce alguna herramienta (preferiblemente la línea de comandos) para optimizar automáticamente y sin pérdidas los archivos JPEG que pueda integrar en nuestro entorno de compilación? Para PNG, actualmente estoy usando PNGOUT , y generalmente ahorra alrededor del 40% de ancho de banda / tamaño de imagen.

Por lo menos, me gustaría una herramienta que pueda eliminar los metadatos de los JPG; noté un caso extraño en el que intenté hacer una miniatura a partir de una fotografía y no pude obtener un tamaño inferior a 34 kB. Después de investigar más, descubrí que los datos EXIF ​​seguían siendo parte de la imagen y la miniatura era de 3 kB después de eliminar los metadatos.

Y más allá de eso, ¿es posible optimizar aún más los JPG sin pérdidas? El optimizador PNG prueba diferentes estrategias de compresión, inicialización aleatoria de la codificación Huffmann, etc.

Soy consciente de que la mayoría de los ahorros provienen del parámetro de calidad JPEG y que es una medida bastante subjetiva. Solo estoy buscando una herramienta que se pueda ejecutar como un paso de compilación y que exprima sin pérdidas algunos bytes de las imágenes.

chris166
fuente
¿¡¿Estás diciendo que había aproximadamente 10 KB de EXIF ​​en un JPG optimizado antes de que se eliminara EXIF?!?!?! ¡Me pregunto qué hay en él!
Netrox
Era todo el bloque EXIF ​​de una cámara digital, incluido cada pequeño detalle de esta fotografía (exposición, tiempo de obturación, etc.)
chris166
@netrox chris166 Esos detalles no ocupan mucho espacio, lo que ocupa mucho espacio son las vistas previas (datos binarios).
Ariel
1
Dos artículos de comparación interesantes, que enumeran las utilidades que se enumeran a continuación: Comparación de herramientas de compresión JPEG Lossless, junio de 2014 ; Prueba comparativa de herramientas de optimización JPEG, febrero de 2013 .
dma_k
@Ariel: El perfil ICC también tiende a ocupar un gran espacio. He visto más de 500 KB de datos binarios de perfil ICC.
saurabheights

Respuestas:

68

Utilizo libjpeg para operaciones sin pérdidas. Contiene una herramienta de línea de comandos jpegtran que puede hacer todo lo que quieras. Con la opción de línea de comandos, se eliminan -copy nonetodos los metadatos y se -optimizerealiza una optimización sin pérdidas de la compresión de Huffmann. También puede convertir las imágenes al modo progresivo con -progressive, pero eso podría causar problemas de compatibilidad (¿alguien sabe más sobre eso?)

OutOfMemory
fuente
5
Vaya, eso suena prometedor. Si alguien está interesado, la descarga para Windows está en gnuwin32.sourceforge.net/packages/jpeg.htm
chris166
Yo voy por este. Reduce mi imagen de fondo de 62 kB a 49 kB en modo progresivo. Otra imagen (27 kB) se redujo a 23 kB. ¡Eso es un ahorro del 15-20% sin pérdida de calidad!
chris166
2
progresivo funciona bien en básicamente todo, el único inconveniente es que usa más CPU para decodificar (no es suficiente para importar).
Ariel
1
el progresivo a menudo puede ser más grande que la línea de base para archivos de menos de 9k
Collin Anderson
3
Progressive necesita mucha más memoria para decodificar. Los jpegs regulares se pueden transmitir: solo necesita decodificar en pequeñas secciones. Para decodificar un jpg progresivo, debe mantener la imagen descomprimida completa en la memoria a la vez.
jcupitt
72

Escribí una GUI para todas las herramientas de optimización de imágenes que pude encontrar , incluido MozJPEG y jpegoptimque optimizan tablas de Huffman, escaneos progresivos y (opcionalmente) eliminan metadatos invisibles.

ImageOptim aplastando

Si no tienes una Mac, también tengo una interfaz web básica que funciona en cualquier plataforma.

Kornel
fuente
5
¡Excelente! Usted, señor, necesita un botón Flattr. O únete a Gittip.
Thilo
2
¡ImageOptim e ImageAlpha son geniales!
Jon z
Gran herramienta - sugerencia menor. ¿Por qué restringir JPEGoptim a una calidad del 80%? Las imágenes de fondo grandes a menudo querrían ir al 60% o incluso menos. thx
niico
¿Por qué eliminar los datos EXIF? : /
Adrien Be
@AdrienBe 1. Privacidad. Es posible que no desee que todos en la red conozcan su ubicación GPS. 2. porque en los archivos guardados desde Photoshop puede haber megabytes de basura XML incrustados en los archivos.
Kornel
12

[SÓLO WINDOWS]

RIOT (Radical Image Optimization Tool) ¡Esta es la mejor herramienta de optimización de imágenes que he encontrado!

http://luci.criosweb.ro/riot/

Puede obtener fácilmente una imagen de 10 MB hasta 800 KB mediante submuestreo. Es compatible con PNG, GIF y JPEG. Incluso se integra en menús contextuales para que pueda enviar imágenes directamente allí. Le permite rotar, cambiar el tamaño, comprimir a KB especificados y más. También tiene complementos para GIMP e IrfanView y otras cosas.

También hay una DLL disponible si desea incorporarla a sus propios programas o programa java script / c ++.

Otra alternativa es http://pnggauntlet.com/ PNGGAUNTLET tarda una eternidad pero hace un buen trabajo.

[SÓLO WINDOWS]

Ben
fuente
7
Advertencia: RIOT se ve bien pero instala TuneUp y una mierda sin preguntarle, .. Clasificaría esto como Malware.
Daniel W.
1
@DanFromGermany tiene razón. Vea las reseñas aquí: download.cnet.com/RIOT/3000-12511_4-10911908.html#summaryList
RNickMcCandless
1
Nunca lo hizo hasta hace poco.
Ben
¡Alerta de malware! El administrador de descargas de Chrome advierte que RIOT es malware
ruhong
8
FYI: Hay un archivo .zip portátil para RIOT que no contiene malware ni instaladores de ningún tipo. Simplemente desplácese hacia abajo en su página de descargas. luci.criosweb.ro/riot/download
Goyuix
12

Un nuevo servicio llamado JPEGmini produce resultados increíbles. Es una pena que solo esté en línea. Editar : ahora está disponible para Windows y Mac

Eduardo Molteni
fuente
Ahora tenemos una aplicación para Mac disponible (divulgación: estoy en el equipo de desarrollo)
DanJ
4
No sé si eres el autor o no, pero esa aplicación engaña a los usuarios. Si ejecuta jpegquality.c en sus "mini" imágenes para detectar la cantidad de compresión, y luego comprime los originales con imagemagick con la misma calidad => obtendrá los mismos resultados, los mismos artefactos JPEG en ambas imágenes. Imagemagick puede ser de código abierto, pero eso no significa que esté bien usarlo y luego afirmar que desarrolló una nueva tecnología de compresión
buen culo
@onetrickpony: No estoy afiliado a ellos de ninguna manera.
Eduardo Molteni
@niceass ¿Cómo sabe que JPEGmini está usando código ImageMagick? Saber que el factor de calidad es lo mismo que la salida de IM no es una prueba. Supongo que recomprimen la imagen reduciendo los factores de calidad, quizás con un poco de filtrado, y usan alguna métrica de calidad para decidir cuándo detenerse.
koan
Ejecuté el último JPEGmini en una imagen que había exportado previamente desde ImageMagick y se informó que JPEGmini ya se había ejecutado en él, lo cual no recuerdo haber hecho. La ejecución de jpegtran -optimize -copy none en la misma imagen redujo el tamaño en 12 KB.
koan
10

Probé varias de las sugerencias anteriores; personalmente, buscaba una compresión sin pérdidas.

Mi imagen de muestra tenía un tamaño original de 67,737 bytes.

Usando kraken.io, bajó a 64,718 Usando jpegtran, bajó a 64,718 Usando yahoo smush-it, bajó a 61,746 Usando imagemagick (-strip), bajó a 65,312

La opción smush.py parece prometedora, pero la instalación fue demasiado compleja para hacerla rápidamente

jpegrescan también parece prometedor, pero parece ser Unix y estoy usando Windows

jpegmini NO es sin pérdidas, pero no puedo notar la diferencia (hasta 22,172)

La aplicación Altrasoft jpegstripper de plinth no funciona en mi Windows 7

jpegoptim no es Windows, no es bueno para mí

Riot (manteniendo la calidad al 100%) lo bajó a 63,416 y con el submuestreo de croma configurado en alto, lo bajó a 61,912; sin embargo, no sé si eso es sin pérdidas o no, y creo que se ve más liviano que el original .

Entonces mi veredicto es yahoo smushit si debe ser sin pérdidas

Carnicero Graham
fuente
jpegrescan funciona en Windows si eres terco. Reduce el tamaño como por arte de magia (5-15% sin pérdida de calidad), lo cual es asombroso, porque simplemente está reordenando el escaneo progresivo ordenando AFAIK (puede notar lo mismo en otros programas, los archivos a veces se vuelven marginalmente más pequeños en Photoshop si elige un número diferente de escaneos, sin motivo aparente). Además, fue hecho por uno de los tipos que hizo x264, es un prodigio en el campo de la compresión.
Camilo Martin
7

ImageOptim es realmente hábil. La opción de línea de comando publicada por el autor llenará la GUI y mostrará el progreso. Usé jpegtran para optimizar y convertir a progresivo, luego ImageOptim para optimizaciones progresivas adicionales y para otros tipos de archivos.

La reutilización del código de script también se encuentra en este foro (todos los archivos reemplazados en su lugar):

jpegtran

for file in $(find $DIR -type f \( -name "*.jpg" -or -name "*.jpeg" -or -name "*.JPG" \)); do
    echo found $file for optimizing...
    jpegtran -copy comments -optimize -progressive -outfile $file $file
done

ImageOptim

for file in $(find $DIR -type f \( -name "*.jpg" -or -name "*.png" -or -name "*.gif" \)); do
do
    echo found $file for optimizing...
    open -a ImageOptim.app $file
done
bsy-web
fuente
4

En caso de que alguien esté mirando, he escrito una versión sin conexión de Smush.it de Yahoo. Optimiza sin pérdidas png, jpgs y gifs (animados y estáticos):

http://github.com/thebeansgroup/smush.py

timmy
fuente
Funciona bien, pero hay un problema con la compresión png :(
4

Puede usar jpegoptim que optimizará sin pérdidas los archivos jpeg de forma predeterminada. La --strip-allopción elimina toda la información adicional incrustada. También puede especificar un modo con pérdida con el--max interruptor, que es útil cuando tiene imágenes guardadas con una configuración de muy alta calidad, que no es necesaria para, por ejemplo. contenido web.

Obtiene una optimización similar a la de jpegtran (consulte la respuesta de OutOfMemory) pero jpegoptim no puede guardar en jpegs progresivos.

gris azulado
fuente
4

Escribí una herramienta de línea de comandos llamada 'picopt' (similar a ImageOptim) que usa programas externos para optimizar archivos JPEG, PNG, GIFS, GIF animados e incluso contenido de archivo de cómics (CBR / CBZ).

Esto es adecuado para usar con homebrew en sistemas OS X o Linux donde haya instalado herramientas como jpegrescan, jpegtran, optipng, gifsicle, etc.

https://github.com/ajslater/picopt

AJ Slater
fuente
¿Existe una versión de Windows de esto?
starbeamrainbowlabs
si puede instalar sus dependencias posix en un entorno de Windows como cygwin, podría hacerlo. Sin embargo, serías el primero en probarlo.
AJ Slater
3

Yo también recomendaría ImageMagick . Tiene una opción de línea de comando para eliminar metadatos EXIF

mogrify -strip image.jpg

Hay muchas otras herramientas que hacen lo mismo.

En lo que respecta a la recompresión de archivos JPEG, no lo haga. Para empezar, los archivos JPEG tienen pérdidas, por lo que cualquier forma de recompresión solo dañará la calidad de la imagen. Sin embargo, si tiene imágenes codificadas sin pérdida, algunos codificadores hacen un mejor trabajo que otros. He notado que los archivos JPEG hechos con Photoshop se ven mejor constantemente que cuando se codifican con ImageMagick (a pesar del mismo tamaño de archivo) debido a razones complicadas . Además (y esto es relevante para usted), sé que al menos Photoshop puede guardar archivos JPEG como optimizados, lo que significa que eliminan la compatibilidad con algunas cosas que probablemente no le importan para ahorrar un par de KB. Además, asegúrese de no tener ningún perfil de color incrustado y es posible que pueda guardar otro par de KB.

David Johnstone
fuente
Interesante. Siempre pensé que la calidad del 90% es la misma en todas las herramientas de imagen. ¿Es Photoshop la única herramienta que utiliza coeficientes DCT optimizados?
chris166
1
Pensé que el 90% iba a ser el mismo en varias herramientas hasta que intenté guardar las mismas imágenes en Photoshop e Imagemagick. Descubrí que alrededor del 70% en Guardar para Web en Photoshop creaba archivos que tenían aproximadamente el mismo tamaño que el 92% en Imagemagick, pero los archivos de Photoshop tenían una calidad notablemente mejor. No tengo idea de cómo lo hacen otras herramientas.
David Johnstone
¿Sabe cómo realizar la eliminación de metadatos EXIF ​​utilizando la versión PHP de ImageMagick?
Sonny
@Sonny No realmente, pero podría estar interesado en esta función: php.net/manual/en/function.imagick-stripimage.php
David Johnstone
Gracias David, eso es lo que terminé encontrando. Aquí está mi hilo: stackoverflow.com/questions/2540068
Sonny
2

Recomendaría usar http://kraken.io Es una aplicación web ultrarrápida que optimizará sus archivos PNG y JPEG mucho mejor que smush.it.

Pono
fuente
2

Recomiendo usar JpegOptim, es gratis y realmente agradable, puedes especificar la calidad, el tamaño que quieras ... Y fácil de usar en la línea de comandos.

JpegOptim

agonista_
fuente
1

Puedo recomendar esto para una transparencia cercana:

convert 'yourfile.png' ppm:- | jpeg-recompress -t 97 -q veryhigh -a -m smallfry -s -r -S disable - yourfile.jpg

Utiliza ImageMagick 's converty jpeg-recompressde jpeg-archivo .

Ambos son de código abierto y funcionan en Windows, Mac y Linux. Es posible que desee modificar las opciones anteriores para diferentes expectativas de calidad.

Camilo Martín
fuente