• # Rappel qui s'impose sur GIF,PNG et JPEG

    Posté par . En réponse à la dépêche Apres GIF, le JPEG. Évalué à 10.

    Le gif est un format de compression non destructif basé sur une palette de couleurs, et sur la répétition de la couleur dans l'image. Plus les couleurs sont répétées plus il y a de gains possibles. Il n'y a qu'une compression possible, sans pouvoir compresser d'avantage en sacrifiant la qualité. Initialement, la palette faisait 256 couleurs au maximum, on l'utilise donc pour tout ce qui est dessin/logos, où ca ne pose pas de problème. Moins on met de couleurs (2/4/8/16/32/64/128/256) moins il faut de bits pour l'exprimer (1/2/3/4/5/6/7/8 bits). Par contre pour faire 16 mio de couleurs, il faut 24 bits donc 3 fois plus de place qu'en 256 couleurs.

    Le PNG est basé sur le meme principe, en un peu plus efficace. Il y a plusieurs taux de compression possibles, mais il faut choisir entre rapidité de codage/décodage et taille, ce qui est basé sur une optimisation du code de compression. Pas de merveilles à en attendre donc, la différence fait 10% à tout casser. C'est toujours du non destructif, donc pas moyen de gagner davantage au dépens de la qualité.

    Le JPG lui est très différent et beaucoup plus complexe. Pas besoin de palette. Pourquoi ? Parce qu'on n'essaye pas de restituer l'image "pixel par pixel", mais "carré par carré". Une image JPEG est l'addition d'une multitudes de carrés. Le cas typique c'est un visage : avec un gros carré rose pale au milieu, et une dizaine de petits carrés rose plus foncé au tour, hop on a une joue !

    11 éléments = une joue. Alors qu'il aurait fallu plusieurs centaines d'éléments pour faire une joue si l'élément est le pixel.

    Bien sur c'est plus grossier, mais on gagne tellement de places qu'en échange on peut mettre le paquet sur les couleurs, car on ne doit la préciser que 11 fois au lieu de plusieurs centaines dans l'exemple. Conséquence : on n'a meme pas besoin de prévoir moins de 16 Mio de couleurs. En plus il y a un moyen tout simple de faire varier la taille/qualité de l'image :
    -plus les carrés sont grands plus l'image est légère et mauvaise
    -plus les carrés sont petits plus l'image est lourde et bonne.
    Le très grand taux de compression en fait un format de choix pour les photos.
    Mais le fait qu'ils soit basé sur des carrés fait qu'il a du mal à rendre les courbes, d'ou les pbs de flou autour des textes par exemple.
    L'autre contrepartie c'est que le temps de codage/décodage est beaucoup plus lourde, on s'en rendait facilement compte il y'a 5 ou 6 ans, maitenant les machines modernes il n y'a plus de pb.


    En résumé :
    - le GIF/PNG est très mal adapté aux images avec peu de répétitions de couleurs différentes. Donc les photos avec leurs dégradés en milliers/millions de couleurs ne sont pas du tout adaptées à ca. Par contre pour les logos, dessins, textes c'est parfait d'autant plus que la qualité est préservée à 100%
    - le JPG est très mal adapté aux petits motifs, détails, couleurs uniformes, qu'il a du mal à retranscrire fidèlement avec des carrés.

    Tout ceci pour dire que non le PNG ne pourra jamais remplacer le Jpeg, et qu'on aura toujours besoin de 2 formats d'images différents, car ces 2 types d'images n'ont rien à voir. Idéalement si on pouvait faire un format commun efficace, il ne sera jamais aussi bon que le Jpeg dans les photos, ou que le PNG dans les logos.