Comment trouver la qualité JPG?


16

Lorsque j'enregistre un fichier JPG avec GIMP, je peux ajuster la qualité à laquelle je l'enregistre, de 0 à 100 (j'utilise 89). Il semble que j'ai utilisé une application pour voir ce que ce numéro était sur le fichier enregistré, mais si je le fais, je ne peux pas pour la vie de moi comprendre ce que c'était. Des suggestions sur quoi utiliser?


2
Juste pour s'assurer qu'il est connu: le réglage de qualité des différentes applications n'est pas comparable, en général: faqs.org/faqs/jpeg-faq/part1/section-5.html . Cependant, GIMP et ImageMagick devraient utiliser l'échelle de qualité IJG.
Michael Schumacher

Réponses:


22

Une fois enregistré, vous ne pouvez plus dire la qualité.

(La définition de la qualité lors de l'enregistrement indique simplement au logiciel la quantité de pertes que vous trouvez acceptable, mais une fois enregistrée: ce qui est perdu est perdu. Vous auriez besoin d'un humain pour dire si quelque chose a l'air bien.)

Hmmm, je suppose que j'avais tort. Je pense toujours que ce qui précède est exact, mais ImageMagick de identifyme donne tort?

identifier -verbose myimage.jpg

Image: myimage.jpg
  Format: JPEG (format JFIF du Joint Photographic Experts Group)
  Classe: DirectClass
  Géométrie: 358x240 + 0 + 0
  Résolution: 300x300
  [...]
  Compression: JPEG
  Qualité: 90
  Orientation: indéfinie
  [...]

Je ne sais pas comment l'image de mon test a été enregistrée, mais elle ne contient aucune donnée EXIF. La qualité peut-elle encore être stockée dans l'image?


Ne pouvez-vous pas expérimenter la conversion en différentes qualités? J'ai du mal à y croire, à moins qu'ImageMagick ne stocke des données privées dans le jpg (donc cela pourrait ne pas fonctionner avec d'autres packages).
harrymc

Intéressant. J'attendrai de voir comment cela se déroulera.
Nathaniel

1
+1 Oui imagemagick fonctionne. Je peux changer à plusieurs reprises la qualité jpeg et utiliser identifier pour voir le changement. Cela fonctionne si j'utilise convert (une autre fonctionnalité imagemagick) ou un autre outil comme MS Photo Editor.
DaveParillo

1
ImageMagick fait quelque chose de différent. Il donne une estimation, plutôt que de lire ce qu'a fait votre logiciel d'origine. Votre réponse originale, maintenant barrée, est vraiment plus correcte. Voir la réponse de @ sleske.
mattdm

26

Pour ajouter à la réponse d'Arjan:

ImageMagick identifysemble regarder l'intérieur de l'image JPEG pour deviner le paramètre de qualité utilisé pour l'encoder.

Le code source d'ImageMagick (applaudissez pour le logiciel libre :-)) contient les lignes :

/*
  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, ligne 843ff. dans ma version récente du code source d'ImageMagick).

Je ne connais pas assez le JPEG pour vraiment comprendre, mais il semble faire quelque chose comme décrit dans cet article:

Déterminez le facteur de qualité JPEG à l'aide de Visual C # .NET (lien mort depuis janvier 2018; copie sur archive.org à partir de 2015 )

Alors oui, identifypeut effectivement déterminer le réglage de la qualité d'un JPEG seulement du seul fichier compressé (bien que le résultat ne soit pas toujours tout à fait exact).


1
Whoa. Très gentil de votre part de vérifier le code source. Cool.
Nathaniel

@Nathaniel, pouvez-vous s'il vous plaît sélectionner cette réponse comme étant celle acceptée, au lieu de la mienne? Merci! (Je ne peux pas supprimer le mien tant qu'il est accepté.)
Arjan

Il recherche la table de quantification JPEG qui rend le mieux compte de l'apparence du flux binaire compressé.
jbarlow

5

Comme Arjan l'a mentionné le identify -verbose myimage.jpgfera. Comme imagemagick est un outil CLI, il peut être utile pour les scripts. L'approche identify -verbose myimage.jpg | grep ...est très lente. Je recommande d'utiliser la messagerie instantanée comme celle-ci

identify -format '%Q' myimage.jpg

C'est massivement plus rapide.


2

JPEGsnoop est une belle alternative à ImageMagick identify. Le téléchargement est assez petit et est disponible en format portable.

Après avoir traité un jpg, vous trouverez le "facteur de qualité approximatif" sous le marqueur DQT.


1

Avec la bibliothèque ImageMagick ++ , c'est simple:

Image magick_image( pathname );
size_t compressionFactor = magick_image.quality(); // 0..100

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.