Qu’est-ce que JPEG ?
JPEG est une méthode de compression avec pertes largement prise en charge pour les photographies matricielles et les autres images à tons continus. La qualité de compression est réglable, mais le codage JPEG courant ne permet pas la transparence.
Fonctionnement de JPEG
Le procédé JPEG courant divise chaque composante de couleur en blocs de 8×8, applique une transformée en cosinus discrète à chaque bloc, divise les coefficients obtenus par les valeurs d’une table de quantification, arrondit les résultats à des entiers et leur applique un codage entropique. La quantification est l’étape qui élimine les détails : des tables plus grossières réduisent la taille du fichier au prix d’erreurs visibles, notamment du flou et des franges colorées autour du texte et des contours nets. Les encodeurs stockent aussi couramment les deux composantes de chrominance à une résolution réduite, ce qui constitue une deuxième source de perte, distincte. La norme JPEG définit les données compressées et la syntaxe de leurs marqueurs, mais exclut de son périmètre l’espace colorimétrique et les autres informations applicatives ; c’est pourquoi les fichiers suivent couramment une convention comme JFIF ou Exif et peuvent contenir un profil ICC et des métadonnées descriptives dans des segments d’application.
Points clés
- Une valeur de qualité est une convention de l’encodeur, et non un élément de la norme JPEG : la norme ne spécifie aucune table de quantification par défaut, et les encodeurs de type libjpeg associent une valeur de la plage 0–100 à des tables mises à l’échelle ; une même valeur ne donne donc pas nécessairement le même résultat avec un autre encodeur. Une qualité de 100 n’est pas sans pertes. Dans libjpeg-turbo, elle minimise les pertes de quantification, mais le sous-échantillonnage de la chrominance et les arrondis éliminent toujours des informations, et la taille des fichiers augmente fortement au-delà d’environ 95 pour un faible gain visible.
- Le JPEG de base est le procédé séquentiel sur 8 bits avec codage de Huffman que tout décodeur fondé sur la DCT doit prendre en charge ; il code chaque composante en une seule passe. Le JPEG progressif stocke les mêmes coefficients quantifiés sur plusieurs passes, ce qui permet à un décodeur d’afficher rapidement une image complète grossière, puis de l’affiner. L’image finale est identique à celle du procédé séquentiel à réglages égaux et le fichier a sensiblement la même taille, mais le décodage nécessite un tampon de coefficients pour l’ensemble de l’image.
- Chaque cycle de décodage et de réencodage applique une nouvelle quantification ; les pertes s’accumulent donc au fil des enregistrements. Lorsque les pixels doivent changer, réencodez à partir de l’original plutôt que d’une sortie antérieure. Les outils qui travaillent sur les coefficients stockés évitent ce cycle :
jpegtranpeut passer du mode de base au mode progressif ou inversement, effectuer une symétrie de l’image ou la faire pivoter par incréments de 90° sans la dégrader. Deux limites s’appliquent. Ces outils ne peuvent pas modifier la qualité, et une symétrie ou une rotation peut laisser une bande de bord non transformée, ou la supprimer sur demande, lorsque la largeur ou la hauteur concernée n’est pas un multiple de la taille de l’iMCU (unité minimale codée entrelacée) ; la dimension concernée dépend de la transformation. Cette unité dépend du sous-échantillonnage de la chrominance utilisé et vaut généralement 8 ou 16 pixels ; des dimensions divisibles par 8 ne suffisent donc pas toujours. Les métadonnées sont un sujet distinct : par défaut,jpegtrancopie les commentaires et supprime les autres métadonnées, comme les données Exif et le profil ICC, sauf instruction de les conserver. Le texte des commentaires se trouve dans son propre segment de marqueur et n’interfère pas avec les données d’image ; son ajout ou son remplacement ne nécessite donc pas non plus de réencodage. - La norme JPEG définit aussi un mode sans pertes, mais il s’agit d’un procédé distinct, sans DCT, que de nombreux décodeurs ne peuvent pas lire. Lorsque la préservation exacte des pixels ou la transparence est nécessaire, utilisez plutôt un format comme PNG ; JPEG n’a pas de canal alpha.
Quand JPEG est utile
Choisissez JPEG lorsqu’une large compatibilité et des fichiers photographiques légers comptent davantage que la préservation exacte des pixels. Des encodages répétés ou une compression agressive peuvent introduire des effets de blocs, des oscillations autour des contours et une perte de détails.
L’apport de Transloadit pour JPEG
Le Robot /image/resize de Transloadit écrit du JPEG lorsque format est défini sur jpg, avec un paramètre quality pour le niveau de compression, une option progressive et un paramètre strip pour supprimer les métadonnées. La sortie JPEG ne peut pas conserver la transparence et, par défaut, le Robot remplace l’arrière-plan des images transparentes par la couleur définie dans son paramètre background. Le Robot /image/optimize réduit la taille des fichiers JPEG existants et peut conserver ou supprimer leurs métadonnées.
- Robot de redimensionnement d’image : format, quality, progressive et background
- Robot d’optimisation d’image
- Formats d’image pris en charge
Explorer les possibilités de Transloadit en matière de formats de fichiers et de compression
Références
- Rec. CCITT T.81 | ISO/IEC 10918-1 : compression et codage numériques des images fixes à tons continus
- libjpeg-turbo usage.txt : qualité et mode progressif de cjpeg, transformations sans pertes de jpegtran
- libjpeg-turbo : utilisation de la bibliothèque JPEG de l’IJG (espaces colorimétriques, marqueurs, utilisation de la mémoire)
- MDN : guide des types et formats de fichiers image (JPEG)