Résolu Connaître le taux de compression jpg d'une image

ccciolll

Membre expert
Club iGen
Bonjour,

je constate que Photoshop semble capable de savoir le taux de compression jpeg qui a été attribué à une image existante.

En effet, quand j'ouvre un jpg et que je fais ensuite « enregistrer sous » jpeg, photoshop me propose un taux de compression différent d'une image à l'autre. Je n'ai pas fais le test complet en créant des images avec tel et tel taux pour les rouvrir et voir le comportement de PS, mais je suis convaincu que ce serait cohérent : il me proposerait le ré-enregistrement avec le même taux de compression.

Ceci suggère donc que ce taux de compression est indiqué qqpart dans l'image.
Commet est-il enregistré ? Est-il possible de le connaître massivement sur des lots d'image sans avoir à les ouvrir une par une et faire « enregistrer sous » pour connaître ce taux.

Exemple si je veux identifier, au sein d'un lot d'image, toutes celles dont la compression est comprise entre 9 et 12 (ou 75 et 100 si on prend les valeurs de enregistrer pour le web), comment puis-je procéder ?
 
Bonjour,

Effectivement photoshop ajoute ses valeurs dans les données exif des images. ci dessous les éléments ajouté par photoshop CC2018 sur une image enregistrée en JPG compression réglée à 10, lu avec exiftool.

---- Photoshop ----
IPTC Digest : cdcffa7da8c7be09057076aeaf05c34e
Displayed Units X : inches
Displayed Units Y : inches
Print Style : Centered
Print Position : 0.0972222238779068 0.22916667163372
Print Scale : 1
Global Angle : 90
Global Altitude : 30
URL List :
Slices Group Name : Alyssia 10 ansfini
Num Slices : 1
Pixel Aspect Ratio : 1
Photoshop Thumbnail : (Binary data 6900 bytes, use -b option to extract)
Has Real Merged Data : Yes
Writer Name : Adobe Photoshop
Reader Name : Adobe Photoshop CC 2018
Photoshop Quality : 10
Photoshop Format : Standard
Progressive Scans : 3 Scans
 
C'est valable pour Photoshop et quelques logiciels pro.
Mais pour connaitre la compression d'un JPEG lambda ou d'un JPEG "enregistré pour le web" (donc sans métadonnée, par défaut) avec Photoshop je ne sais pas…
 
Les données ci-dessus sont bien comme je l'ai dit pour un enregistrer sous... en jpeg avec compression réglée à 10.

Pour un export pour le web en Jpg j'ai choisi 60%, photoshop n'ajoute que la ligne ci-dessous:

---- Ducky ----
Quality : 60%
 
@ccciolll
Bonjour,
Pour ta question de retrouver les fichiers photoshop jpg avec leur niveau de qualité ...
Je me suis amusé à faire un petit applescript qui te demande de choisir un dossier, le scanne y compris les sous dossiers, analyse tous le jpg, et te sort sur le bureau un fichier texte avec : 1 fichier par ligne (si critère qualité renseigné), son chemin et son critère qualité ...
Ces 2 éléments séparés par une tabulation afin de pouvoir ouvrir ce fichier dans excel et faire des tri.
Bon amusement !

Bloc de code:
property pasfichier : 0
set pasfichier to 0
tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à tester"
    set dossier to name of chemin
    my inspecter(chemin)
end tell

on inspecter(un_dossier)
   
    tell application "Finder"
       
       
        set chemin to un_dossier as string
        set lextension to {"jpg", "jpeg"}
       
        set les_fichiers to files of un_dossier
        repeat with chaque_fichier in les_fichiers
           
            set nom to name of chaque_fichier --récupère le nom du fichier
            set AppleScript's text item delimiters to {"."} -- defini le separateur
            set extensionfich to get last text item of nom -- recupère l'extension
            if extensionfich is in lextension then
               
                set TC to ""
                set c to ""
                set fich to chaque_fichier as string
                set lefichier to fich
                --display dialog lefichier
               
                set TC to do shell script "/usr/local/bin/exiftool -PhotoshopQuality " & quoted form of POSIX path of lefichier
                if TC = "" then
                    set TC to do shell script "/usr/local/bin/exiftool -Quality " & quoted form of POSIX path of lefichier
                end if
                if TC = "" then
                else
                    set pasfichier to 1
                    set AppleScript's text item delimiters to {":"}
                    set c to text item 2 of TC
                   
                    set lelog to open for access ((path to desktop folder as text) & "les fichiers.txt") as text with write permission
                    write lefichier & "  Compression JPG = " & (ASCII character 9) & c & return to lelog starting at eof
                    close access lelog
                   
                end if
            end if
        end repeat
       
       
       
       
        set les_dossiers to folders of un_dossier
        repeat with chaque_dossier in les_dossiers
            my inspecter(chaque_dossier) -- dossier suivant
        end repeat
    end tell
end inspecter

tell application "Finder"
    if pasfichier = 0 then
        (display dialog ("waouou ... Ca y est c'est fait ! pas de fichier JPG avec qualité renseignée trouvé") buttons {"Salut !"})
    else
        (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
    end if
end tell
 
  • J’aime
Réactions: magicPDF
Zeltron54 tu es incroyable !
 
Salut, après un premier test, j'ai eu le msg d'erreur suivant après un temps de travail du script

Erreur d'AppleScript
Erreur dans Finder : Démai dépassé pour un AppleEvent


Résultat : error "Erreur dans Finder : Délai dépassé pour un AppleEvent." number -1712

Pour tester j'avais copié collé le code dans une fenêtre AppleScript, compilé, enregistré au format script, puis sans fermer la fenêtre, directement cliqué sur Éxecuter, puis pointé sur un dossier de 2603 éléments jpg pour 1,96 Go
Pour info, j'aI aussI dû relancer le finder suite à ce test (roue multi et « finder ne répond pas »)

Ais-je omis une étape ?

Edit : re testé sur un petit dossier de six jpg, ce fût un succès.
Donc le pb précédent doit venir soit du poids du dossier testé, soit d'un fichier abîmé dans ledit dossier, soit d'une autre raison qui m'échappe
 
Dernière édition:
Bonjour,

Je viens de tester chez moi 1 dossier avec 277 sous dossiers 3250 images dont 2673 jpg et tout est passé sans problème.

Donc je suppose un fichier qui ne pourrai pas être lu par exiftool ou ??? faudrait trouver le coupable pour analyser le fichier. !
 
Sur 30 fichiers .jpg un seul possède un taux de compression renseigné égal à 9.

Comment on interprète cela , pour celui-ci et les autres ?
Sinon il existe un exécutable chez Topaz, Topaz JPEG to RAW AI qui transforme les jpeg en tiff
 
Sur 30 fichiers .jpg un seul possède un taux de compression renseigné égal à 9.

Comment on interprète cela , pour celui-ci et les autres ?
Sinon il existe un exécutable chez Topaz, Topaz JPEG to RAW AI qui transforme les jpeg en tiff

Je suppose que ceux pour lequel cette info n'est pas renseignée ne proviennent pas de PS, ou en tout cas pas d'un format d'export PS intégrant cette info.

Quant à transformer un jpg en tiff, l'intérêt de la chose est à mesurer avec la connaissance des infos suivantes
- un tiff est plus lourd qu'un jpeg
- le jpg est un format dit « destructif », à chaque encodage il détruit un peu l'image. Un fichier DÉJÀ en jpg a donc DÉJÀ subit une part de destruction qu'on ne rattrapera pas en l'enregistrant dans un autre format
Conclusion, changer un fichier jpg vers du tiff ne fait que l'alourdir tout en lui conservant la destruction déjà subie.
Si le but est de retoucher le fichier, je comprends la démarche (éviter de lui faire subir d'autres destructions).
Sinon, je ne vois pas l'intérêt, sauf peut-être pour utiliser l'image dans un logiciel qui gère le tiff mais pas le jpg, si ça existe.
 
Bonjour,

Je viens de tester chez moi 1 dossier avec 277 sous dossiers 3250 images dont 2673 jpg et tout est passé sans problème.

Donc je suppose un fichier qui ne pourrai pas être lu par exiftool ou ??? faudrait trouver le coupable pour analyser le fichier. !

OK, c'était mon principal soupçon. Je re testerai ça prochainement.
 
Sur 30 fichiers .jpg un seul possède un taux de compression renseigné égal à 9.
Comment on interprète cela , pour celui-ci

Sinon, un taux de 9 doit correspondre environ à 75% de qualité (si on prend 0% comme compression maximale (donc qualité minimale) et 100% compression minimale (donc qualité maximale))

Je ne sais pas exactement à quoi ça correspond concrètement. La taille des carrés de pixels ? Peut-être claude72 saurait nous dire ça.
En tout cas, dans PS, quand on enregistre en jpg, il demande la compression voulue et on répond par une valeur entre 0 et 12 (12 étant la compression minimale, donc qualité et poids maximals). Tj dans PS, si on exporte pour le web, il demande une valeur entre 0 et 100 (toujours compression maxi/poids mini sur la valeur 0).

Je ne sais pas s'il existe un taux « officiel », ici ce sont des valeurs indicatives de PS.
 
Merci Magic, je n'aurais pas dit mieux !