¿Cómo encontrar la calidad JPG?

16

Cuando guardo un archivo JPG con GIMP, puedo ajustar la calidad en la que lo guardo, de 0 a 100 (uso 89). Parece que he usado una aplicación para ver cuál era este número en el archivo guardado, pero si lo hiciera, no puedo averiguar de qué se trata. ¿Alguna sugerencia sobre qué usar?

Nathaniel
fuente
2
Solo para asegurarnos de que se conozca: la configuración de calidad de diferentes aplicaciones no es comparable, en general: faqs.org/faqs/jpeg-faq/part1/section-5.html . Sin embargo, tanto GIMP como ImageMagick deberían usar la escala de calidad IJG.
Michael Schumacher

Respuestas:

22

Una vez guardado, ya no se puede saber la calidad.

(Establecer la calidad mientras se guarda solo le dice al software cuánta pérdida encuentra aceptable, pero una vez guardada: lo que se pierde se pierde. Necesitaría un humano para decir si algo se ve bien).

Hmmm, supongo que estaba equivocado. Todavía pienso lo anterior es correcto, pero ImageMagick 's identifyme demuestra que están equivocados?

identificar -verbose myimage.jpg

Imagen: myimage.jpg
  Formato: JPEG (formato JFIF de Joint Photographic Experts Group)
  Clase: DirectClass
  Geometría: 358x240 + 0 + 0
  Resolución: 300x300
  [...]
  Compresión: JPEG
  Calidad: 90
  Orientación: Indefinida
  [...]

No sé cómo se guardó la imagen en mi prueba, pero no tiene ningún dato EXIF. ¿Se podría almacenar la calidad en la imagen?

Arjan
fuente
¿No puedes experimentar la conversión a diferentes cualidades? Me resulta difícil de creer, a menos que ImageMagick almacene algunos datos privados en el jpg (por lo que esto podría no funcionar con otros paquetes).
harrymc
Interesante. Esperaré para ver cómo funciona esto.
Nathaniel
1
+1 Sí, imagemagick funciona. Puedo cambiar repetidamente la calidad de JPEG y usar Identificar para ver el cambio. Esto funciona si utilizo convertir (otra imagen de maternidad) u otra herramienta como MS Photo Editor.
DaveParillo
1
ImageMagick está haciendo algo diferente. Da una estimación, en lugar de leer lo que hizo su software original. Su respuesta original, ahora tachada, es realmente más correcta. Ver la respuesta de @ sleske.
mattdm
26

Para agregar a la respuesta de Arjan:

identifyParece que ImageMagick realmente mira dentro de la imagen JPEG para adivinar la configuración de calidad utilizada para codificarla.

El código fuente de ImageMagick (software gratuito :-)) contiene las líneas :

/*
  Determine the JPEG compression quality from the quantization tables.
*/
sum=0;
for (i=0; i < NUM_QUANT_TBLS; i++)
{
  if (jpeg_info.quant_tbl_ptrs[i] != NULL)
    for (j=0; j < DCTSIZE2; j++)
      sum+=jpeg_info.quant_tbl_ptrs[i]->quantval[j];

( coders/jpeg.c, línea 843ff. en mi versión reciente del código fuente de ImageMagick).

No sé lo suficiente sobre JPEG para entender realmente, pero parece hacer algo como se describe en este artículo:

Determine el factor de calidad JPEG utilizando Visual C # .NET (enlace inactivo a partir de enero de 2018; copia en archive.org desde 2015 )

Entonces, sí, en identifyrealidad puede determinar la configuración de calidad de un JPEG solo desde el archivo comprimido solo (aunque el resultado puede no ser siempre completamente preciso).

sleske
fuente
1
Whoa Muy amable de su parte para verificar el código fuente. Frio.
Nathaniel
@Nathaniel, ¿puedes seleccionar esta respuesta como la aceptada, en lugar de la mía? ¡Gracias! (No puedo borrar el mío mientras sea aceptado.)
Arjan
Está buscando la tabla de cuantificación JPEG que mejor explica cómo se ve el flujo de bits comprimido.
jbarlow
5

Como Arjan mencionó identify -verbose myimage.jpglo hará. Como imagemagick es una herramienta CLI, puede ser útil para la creación de secuencias de comandos. El enfoque identify -verbose myimage.jpg | grep ...es bastante lento. Recomiendo usar IM como este

identify -format '%Q' myimage.jpg

Es masivamente más rápido.

ManuelSchneid3r
fuente
2

JPEGsnoop es una buena alternativa a ImageMagick's identify. La descarga es bastante pequeña y está disponible en formato portátil.

Después de procesar un jpg, encontrará el "Factor de calidad aproximado" debajo del marcador DQT.

idmadj
fuente
1

Con la biblioteca ImageMagick ++ es fácil:

Image magick_image( pathname );
size_t compressionFactor = magick_image.quality(); // 0..100
Valeriy Van
fuente
1

Picasa 3 tiene el panel de propiedades que muestra la calidad de jpeg, pero en este momento es un abandonware. Picasa 3 Dick Masterson

Uğur Gümüşhan
fuente