Optimisation JPEG (encore)

je vous ai parlé plus d’une fois de recompression des images PNG. Mais … et les jpeg ?

Les jpeg ont aussi des métadonnées importantes et des informations inutiles dans un contexte web. Vous y trouverez plusieurs version de l’image à différentes résolutions pour gérer des miniatures, ou même des pistes audio. Stoyan Stefanov a trouvé un gain moyen de 12 % avec des transformations sans pertes sur l’image elle-même, loin d’être négligeable.

C’est Jpegtran dont j’avais parlé la dernière fois, l’outil utilisé par smushit. En plus de retirer les blocs de méta données (moins précisément que JHead), il permet de retoucher un peu la compression sans toucher à la qualité de l’image ni subir de pertes par rapport à l’image originale.

Jpegtran permet aussi de créer des images jpeg progressives, ce qui parfois est légèrement plus petit en taille (mais pas tout le temps, et en particulier pas pour les petites images).

Attention toutefois, cela retirera aussi les mentions de copyright éventuelles. Ne le faites que sur vos images ou prévoyez d’extraire d’abord cette information pour la réinjecter dans l’image finale ensuite.

JHead manipule lui aussi les entêtes et les métadonnées EXIF, IPTC et XMP. Je peux vous proposer les options -du -dc -de -di -dx. Jpegoptim propose aussi une optimisation sans perte et la possibilité de supprimer les entêtes EXIF et commentaires. Je n’ai pas de retour sur la performance de l’outil. Pour ceux que ça intéresse il y a une option pour diminuer la qualité de l’image (non activée par défaut).

Maintenant, comme on me le faisait remarquer il y a peu à propos des PNG, la meilleure compression s’obtient toujours en travaillant l’image avant de la fixer dans un format particulier. En particulier il est généralement appréciable de gérer la qualité par zones, pour avoir les détails là où c’est utile.

Publié par edaspet

Plus d'informations sur mon profil en ligne

7 réponses sur « Optimisation JPEG (encore) »

  1. oui enfin on est en 2009 la … plus en 1997. 12% d’un poids d’image lorsque meme la 3G est presque à 2mb/s … ca ne sert à rien. Un peu comme ceux qui veulent gagner 5% sur un CSS compressé.

    Ce genre de logiciel, en revanche, aurait fait des heureux – dont moi – en 1997.

  2. Même ceux qui donnent les leçons commettent des erreurs :
    (CF: http://code.google.com/intl/fr/speed/page-speed/images/activity3.png ) *

    Pour JPEG, quelques conseils utilisateurs en vrac :

    Utilisez la compression par zones et la focalisation des objets ;

    Faites des compromis avec la qualité « 100% » de la plupart des logiciels vers 90% ;

    Ne diminuez pas les couleurs de l’image source pour espérer augmenter le rapport qualité/poids du JPEG final ;

    * Ne convertissez pas du JPEG en PNG (= surpoids et mauvaise qualité) ; ne dimensionnez pas vos images par logiciel en une définition inférieure, ou vous multiplierez les couleurs ;

    JPEG est un format final, conservez une image non altérée pour modifications éventuelles ;

    Il modifie irréversiblement le potentiel d’optimisation d’une image (qui aurait pu à l’origine offrir un meilleur rapport qualité / poids dans un autre format -PNG) ;

    JPEG dégrade la structure à chaque enregistrement (même sans modifications) ;

    Il peut augmenter considérablement le nombre de couleurs d’une image disposant à l’origine de peu de couleurs.

  3. Ah non, pas ici Rod, surtout quand comme le site que tu met en lien on se trimballe avec 1,5 Mo d’images. Rien que pour tout télécharger la première fois, à 2Mb/s (0,25 Mo/s), c’est 6 secondes pleines et entières d’attente. Dégager 10 ou 15% c’est beaucoup, surtout quand ça ne coûte quasi rien (vu qu’on parle de modifications sans pertes, à pixels identiques).

    À titre de rappel, on *voit* une différence sur le trafic, la fidélisation et la vente quand on compte en centaines de millisecondes. Pour Google 500ms c’est plus de 20% de trafic perdu et pour Yahoo! 400ms c’est 5 à 9% d’abandons en plus.

    Sur ton site, en 2Mb/s avec IE6, 12% sur les images c’est entre une demi seconde et une seconde de gagné (ou perdu) sur le chargement de ta page.

    D’ailleurs tu l’as bien vu, toi, le webmaster de hiboo, ou ceux qui ont réellement créé les composants, puisque une partie de tes javascript sont justement compressés raz la gueule avec le packer de Dean Edward (ce qui n’est pas vraiment conseillé mais c’est une autre question).

    Ces problématiques là sont considérées comme cruciales par les plus grands acteurs, et ce n’est visiblement pas les 7s nécessaires pour charger ton site qui vont me contredire.

    http://performance.survol.fr/2008/06/a-quoi-ca-sert/

  4. J’en rajoute sur les débits, mais ça mériterait un billet à part entière.

    Si on vend du 24Mb/s, c’est en fait du 16Mb/s IP) et très peu ont en fait ce débit. Enormément sont à moins de 8Mb/s IP. Sur ceux qui sont à plus, il suffit qu’il y ait du p2p ou de la vidéo qui tourne, ajoutes les wifi qui sont rarement très bons, les connexions partagées, … et c’est souvent moins joyeux.

    Quant au 3G je n’en parle même pas. C’est 3,6Mb/s à partager entre tous les utilisateurs de la cellule, sachant que l’allocation se fait par tranches pendant un certain temps. Il suffit qu’il y ait 10 iphones qui font du poll pour que ta cellule soit loin de t’offrir ces 3,6Mb/s. Et encore, ça se sont les conditions idéales, en pratique tu n’es pas à côté de l’antenne et ça se dégrade (pire, quand ça se dégrade pour un utilisateur de la cellule ça a tendance à se dégrader pour tous, la cellule règle automatiquement sa gestion portée/qualité en fonction des gens connectés).

    D’ailleurs même en théorie, fibré 100Mb/s et tout, ce n’est pas si facile. Le protocole tcp/ip fait que tu ne montes pas immédiatement à ton débit idéal. Si ta latence est forte et si tu as un ou deux autres logiciels sur ta connexion (même s’ils ne prennent pas énorme), tu n’y arriveras probablement pas avant d’avoir déjà téléchargé entièrement l’image, et il faudra recommencer à zéro pour la suivante.

    D’ailleurs c’est très simple à vérifier. Un serveur web classique est connecté en 100Mb/s sur le réseau (cas idéal d’une grosse société, la plupart des sites sont loin d’avoir ça en garanti). À 2mb/s ça voudrait dire qu’il assume au maximum 50 clients simultanés avant d’être à court de bande passante. En général il tient plus, sans atteindre son débit maximum théorique.

    En pratique je compte souvent 2Mb/s pour le débit pratique moyen, et j’ai peur d’être encore bien au dessus de ce qu’on trouve en réalité. Certes, certains ont beaucoup plus, certains s’en foutent, mais ça reste important pour les autres.

  5. Juste pour dire aux gens qui n’aiment pas la performance web : ne venez pas « troller » ici. Vos avis ne sont ni intéressant, ni pertinent!

    @Rod: tu trouves ça inutile, bah restes avec ton site ultra lourd : perso, j’arrive dessus, je me barre dans la seconde (je vois pas les 13 secondes suivantes pour charger le bouzin). Ta page fait ralentir ma machine tellement c’est lourd.

    Bravo Eric, et continuez comme ça !

  6. avec jpegoptim et la commande jpegoptim -p –strip-all *.jpg je vais nettoyer les métadonnées EXIF et conserver les file timestamps :
    1°) qu’est ce que les file timestamps
    2°) je crois qu’il y a des données EXIF pour l’orientation ? que deviennent elles ?

Les commentaires sont fermés.