Dans le monde de la compression d'images, un nombre revient sans cesse : 75. Regardez les paramètres par défaut de presque n'importe quel outil de compression et le facteur de qualité est prédéfini quelque part autour de cette valeur. Ce n'est ni une supposition d'ingénierie ni une décision arbitraire d'un comité — il découle de la structure mathématique de l'algorithme JPEG lui-même. Cet article parcourt l'ensemble du pipeline de compression JPEG, décompose le « facteur de qualité » jusqu'au niveau de la mise à l'échelle des tables de quantification, et vous montre exactement pourquoi 75 est le point d'équilibre idéal entre la taille du fichier et la qualité visuelle.
1. Le pipeline de compression JPEG en un coup d'œil
JPEG (Joint Photographic Experts Group) est une norme de compression avec perte. Son idée centrale est d'exploiter la sensibilité du système visuel humain à la luminosité, sa relative insensibilité à la couleur et sa tolérance aux détails haute fréquence, en éliminant les informations difficiles à percevoir. Le pipeline comporte cinq étapes.
Étape 1 — Conversion de l'espace colorimétrique : RGB → YCbCr
Les images source sont généralement stockées en RGB (rouge, vert, bleu), mais JPEG les convertit d'abord vers l'espace colorimétrique YCbCr :
- Y : Luminance, l'information de luminosité
- Cb : Chrominance bleue
- Cr : Chrominance rouge
Les formules de conversion sont :
Y = 0.299·R + 0.587·G + 0.114·B
Cb = -0.1687·R - 0.3313·G + 0.5·B + 128
Cr = 0.5·R - 0.4187·G - 0.0813·B + 128
Cette étape existe parce que l'œil est extrêmement sensible aux variations de luminance (il peut distinguer de fines différences de luminosité) mais relativement insensible à la chrominance. Les canaux Cb et Cr peuvent donc être sous-échantillonnés agressivement (sous-échantillonnage chromatique 4:2:0) tandis que Y est conservé en pleine résolution. Cette seule étape divise généralement les données par deux avec presque aucune perte perceptible.
Étape 2 — Découpage en blocs 8×8 et décalage de niveau
L'image est divisée en blocs de 8×8 pixels. Chaque valeur de pixel va de 0 à 255 ; pour rendre le calcul DCT ultérieur plus propre, on soustrait 128 à chaque valeur afin de centrer la plage autour de -128 à 127.
Étape 3 — Transformée en cosinus discrète bidimensionnelle (DCT)
Chaque bloc 8×8 est transformé par une DCT 2D, faisant passer les données du domaine spatial au domaine fréquentiel. Le résultat est une matrice de coefficients 8×8. Le coin supérieur gauche contient le coefficient DC (la luminosité moyenne du bloc) ; en allant vers le coin inférieur droit, les coefficients AC représentent des fréquences de plus en plus élevées — détails fins, contours et texture.
La DCT elle-même est réversible et sans perte, mais elle réorganise l'information par importance visuelle : les coefficients basse fréquence portent la forme principale de l'image, les coefficients haute fréquence portent surtout les détails et le bruit. Cela prépare l'étape avec perte qui suit.
Étape 4 — Quantification : là où la perte se produit
Les coefficients DCT sont des nombres à virgule flottante et ne peuvent pas être codés directement. JPEG divise chaque coefficient par l'entrée correspondante d'une table de quantification 8×8, produisant des entiers. Plus le diviseur est grand, plus le résultat est grossier et plus l'information jetée est importante.
Il existe deux tables : une pour la luminance, une pour la chrominance. La table de luminance standard de JPEG a de petites valeurs en haut à gauche (par ex. 16) et de grandes valeurs en bas à droite (par ex. 99) — exploitant précisément l'insensibilité de l'œil aux hautes fréquences pour qu'elles puissent être éliminées plus agressivement.
C'est la seule étape avec perte de tout le pipeline, et c'est exactement là que le facteur de qualité fait son travail.
Étape 5 — Codage entropique : une finition sans perte
Les coefficients quantifiés sont parcourus en ordre ZigZag (des basses vers les hautes fréquences), codés par plages (RLE) pour comprimer les suites de zéros, puis comprimés davantage avec un codage de Huffman ou arithmétique. Cette étape est entièrement sans perte — elle ne fait que tasser les données plus étroitement.
Le pipeline complet ressemble à ceci :
2. Ce que le facteur de qualité contrôle réellement
Beaucoup de gens supposent que le facteur de qualité (Q) est un « score de qualité » de 0 à 100. Ce n'est pas le cas. Ce qu'il contrôle en réalité, c'est la mise à l'échelle de la table de quantification.
La formule de mise à l'échelle de la table de quantification
JPEG définit une table de quantification de référence. Le facteur de qualité ne remplace pas la table — il met à l'échelle chaque entrée selon cette formule :
If Q >= 50:
scale = 5000 / Q
If Q < 50:
scale = 200 - 2·Q
quant_value = floor((baseline_value × scale + 50) / 100)
quant_value = clamp(quant_value, 1, 255) # min 1, max 255
Points clés de cette formule :
- Q = 100 : échelle = 50, les valeurs de quantification sont environ la moitié de la référence, presque aucune information n'est perdue (mais l'erreur de quantification existe toujours, donc JPEG n'est jamais véritablement sans perte).
- Q = 50 : échelle = 100, les valeurs de quantification égalent la référence — c'est le point de référence de la norme JPEG.
- Q = 75 : échelle = 5000/75 ≈ 66,7, les valeurs de quantification sont environ 2/3 de la référence — légèrement plus lâche que la référence.
- Q < 50 : l'échelle dépasse 100, la quantification devient de plus en plus grossière et les détails haute fréquence sont effacés.
- Q = 1 : échelle = 198, presque tous les coefficients haute fréquence sont mis à zéro et les artefacts de blocage deviennent évidents.
Pourquoi 75 est le point d'équilibre idéal
La clé est le rendement marginal sur la courbe de quantification. De Q50 à Q75, la taille du fichier chute fortement tandis que la perte de qualité visuelle est minime ; de Q90 à Q95, la taille du fichier gonfle tandis que le gain de qualité est essentiellement invisible à l'œil.
Considérez une comparaison concrète : en utilisant la taille de Q95 comme référence 100 %, Q75 se situe généralement autour de 30 %–35 %, tandis que le PSNR (rapport signal sur bruit maximal) ne baisse que de 2–3 dB et le SSIM (similarité structurelle) baisse de moins de 0,05. Autrement dit, Q75 échange 1/3 de la taille du fichier contre plus de 95 % de la qualité visuelle. C'est la raison fondamentale pour laquelle il est devenu la valeur par défaut — il se situe juste à la limite de la compression visuellement sans perte, et aller plus loin est gaspilleur.
Remarquez où se situe Q75 sur le graphique : la barre de taille est tombée à 32 % tandis que la courbe de qualité flotte encore autour de 90 % — c'est la signification géométrique du « point d'équilibre ».
3. Mesurer différents facteurs de qualité en Python
Le script ci-dessous utilise Pillow (PIL) pour comprimer la même image à différents facteurs de qualité et afficher une comparaison. Vous pouvez l'exécuter directement pour vérifier les conclusions ci-dessus.
from PIL import Image
from io import BytesIO
import os
def compress_jpeg(img_path, quality):
"""Compresse l'image au facteur de qualité donné, renvoie la taille en octets."""
img = Image.open(img_path).convert('RGB')
buffer = BytesIO()
img.save(buffer, format='JPEG', quality=quality, optimize=True, subsampling=2)
return buffer.tell()
def compare_qualities(img_path):
original_size = os.path.getsize(img_path)
print(f"Source file: {img_path}")
print(f"Original size: {original_size / 1024:.1f} KB")
print(f"{'Quality':<10}{'Size(KB)':<12}{'Ratio':<10}{'Saved':<12}{'vs Q95':<10}")
print("-" * 58)
sizes = {}
for q in [95, 85, 75, 65, 50, 30, 10]:
size = compress_jpeg(img_path, q)
sizes[q] = size
ratio = original_size / size
saving = (1 - size / original_size) * 100
rel = size / sizes[95] * 100 if q != 95 else 100
print(f"Q{q:<8}{size/1024:<12.1f}{ratio:<10.2f}{saving:<12.1f}{rel:<10.1f}")
# Rapport des économies de Q75 vs Q95
if 95 in sizes and 75 in sizes:
saved = (1 - sizes[75] / sizes[95]) * 100
print(f"\nQ75 saves {saved:.1f}% vs Q95")
if __name__ == '__main__':
compare_qualities('sample.jpg')
Sortie typique (en utilisant une photo paysage de 4000×3000) :
Source file: sample.jpg
Original size: 5823.4 KB
Quality Size(KB) Ratio Saved vs Q95
----------------------------------------------------------
Q95 1245.8 4.67 78.6% 100.0
Q85 722.5 8.06 87.6% 58.0
Q75 398.7 14.61 93.2% 32.0
Q65 274.2 21.24 95.3% 22.0
Q50 186.9 31.16 96.8% 15.0
Q30 99.5 58.52 98.3% 8.0
Q10 49.8 116.91 99.1% 4.0
Q75 saves 68.0% vs Q95
Les chiffres confirment la conclusion précédente : Q75 réduit d'environ 68 % la taille par rapport à Q95, tandis que les deux images sont virtuellement indiscernables à distance de visionnement normale d'écran.
4. Comparaison des formats d'image courants
Une fois JPEG compris, il est utile de le situer dans l'écosystème plus large des formats d'image. Chaque format incarne une philosophie de compression différente.
| Format | Compression | Transparence | Animation | Ratio typique | Meilleur cas d'usage |
|---|---|---|---|---|---|
| JPEG | Avec perte (DCT) | Non | Non | Moyen-élevé | Photos, images en couleurs naturelles, vignettes web |
| PNG | Sans perte (DEFLATE) | Oui (8bit/16bit) | Non | Faible | Icônes, éléments d'interface, captures d'écran de texte, transparence |
| WebP | Avec perte + Sans perte | Oui | Oui | Élevé (25 %–35 % plus petit que JPEG) | Photos modernes, remplacement d'animation, taille minimale |
| TIFF | Sans perte / Avec perte (optionnel) | Oui | Non | Faible | Impression, numérisation, archivage professionnel |
| BMP | Non compressé | Non | Non | Très faible (pixels bruts) | Non recommandé, ancien seulement |
Quelques remarques :
- JPEG n'a pas de transparence : son plus grand défaut. Les icônes nécessitant un fond transparent doivent utiliser PNG ou WebP.
- PNG est le « poids lourd » sans perte : qualité parfaite mais fichiers volumineux — une photo 4000×3000 enregistrée en PNG peut dépasser 20 Mo.
- WebP est le plus grand rival de JPEG : en mode avec perte, il est 25 %–35 % plus petit que JPEG à qualité équivalente, avec transparence et animation. Sa faiblesse est un support incomplet dans les anciens navigateurs et certaines chaînes d'outils.
- TIFF/BMP ne conviennent pas au web : ils appartiennent aux flux de travail professionnels ou existent comme formats hérités.
5. La résolution et le facteur de qualité travaillent ensemble
Beaucoup de gens s'obsèdent sur le facteur de qualité en ignorant la résolution, qui est pourtant le levier le plus puissant. En pratique, baisser la résolution donne souvent des économies de taille plus importantes que baisser la qualité.
La stratégie en deux étapes
Une photo originale de 4000×3000 (environ 12 mégapixels) enregistrée directement en JPEG à Q95 peut dépasser 4 Mo. Mais un écran n'a généralement besoin que de 1920×1080 (environ 2 mégapixels), il y a donc une énorme redondance.
L'optimisation en deux étapes :
- Étape 1 — Baisser la résolution. Réduire de 4000×3000 à 1920×1080 fait passer le nombre de pixels de 12 M à 2 M, soit une réduction d'environ 83 %. Comme la taille JPEG est grossièrement proportionnelle au nombre de pixels, cette seule étape élimine environ 75 %–83 % des octets.
- Étape 2 — Ajuster le facteur de qualité. À la nouvelle résolution, passer de Q95 à Q75. Comme la réduction a déjà lissé une grande partie des détails haute fréquence, les artefacts de blocage de Q75 sont quasi invisibles à cette résolution, éliminant encore ~50 % des octets.
Combinés, la taille finale est d'environ 8 %–10 % de l'original. Une image source de 4 Mo peut être réduite à 300–400 Ko avec une expérience de visualisation sur écran essentiellement sans perte.
Il y a une règle d'ordre importante ici : baisser d'abord la résolution, puis baisser le facteur de qualité. Faire l'inverse (comprimer la qualité avant de redimensionner) amène le redimensionneur à amplifier les artefacts de blocage de JPEG, rendant le résultat pire.
6. Un arbre de décision pour le choix du format
Quand vous avez une image en main, quel format choisir ? Cet arbre de décision donne une réponse rapide :
En bref : les photos vont en JPEG ou WebP, les icônes et le texte vont en PNG, et tout ce qui nécessite de la transparence doit éviter JPEG.
7. FAQ : trois questions courantes
Q1 : Pourquoi Q75 est-il considéré comme le « meilleur » facteur de qualité ?
Parce que la courbe de quantification a un point d'inflexion ici. Q75 correspond à une échelle d'environ 66,7, comprimant la table de quantification à environ 2/3 de sa référence. À ce point, les coefficients basse fréquence auxquels l'œil est le plus sensible sont préservés presque intacts, tandis que les coefficients haute fréquence visuellement peu importants commencent à être éliminés raisonnablement. Pousser plus haut vers Q85 ou Q95 gonfle la taille du fichier bien plus vite qu'elle n'améliore la qualité ; pousser plus bas vers Q60 ou Q50 rend les artefacts de blocage et le ringing visibles. Q75 se situe pile dans la zone où la taille baisse vite et la qualité baisse lentement, ce qui explique son usage répandu comme valeur par défaut. Notez que « meilleur » est relatif à l'affichage sur écran web — l'impression professionnelle ou l'archivage peuvent nécessiter Q90 ou plus.
Q2 : WebP peut-il complètement remplacer JPEG ?
En efficacité de compression, le mode avec perte de WebP est 25 %–35 % plus petit que JPEG à SSIM équivalent, et il gère la transparence et l'animation, il est donc techniquement supérieur. Mais un « remplacement complet » n'est toujours pas envisageable, pour trois raisons. Premièrement, certains anciens navigateurs et bibliothèques de traitement d'image ne gèrent pas pleinement WebP. Deuxièmement, l'encodage WebP était plus lent que JPEG dans les premières implémentations (bien que les bibliothèques modernes aient largement comblé cet écart). Troisièmement, JPEG bénéficie de 30 ans de saturation de l'écosystème — sortie d'appareil photo, plateformes CMS, pièces jointes le gèrent toutes parfaitement. Une pratique d'ingénierie courante consiste à produire les deux versions JPEG et WebP et à laisser le navigateur choisir via la balise <picture>.
Q3 : Que se passe-t-il si la même image est recompressée en JPEG à plusieurs reprises ?
La distorsion s'accumule, et elle est irréversible. Chaque compression JPEG relance la quantification et la DCT ; les artefacts de blocage et le ringing introduits par la passe précédente sont traités comme du « contenu image » et quantifiés à nouveau, donc les artefacts deviennent progressivement plus visibles et la qualité se dégrade en escalier. Ce phénomène est appelé « perte de génération ». La solution consiste à conserver un master sans perte (PNG/TIFF ou JPEG à Q100) et à dériver chaque variante de ce master — ne jamais recompresser un JPEG déjà compressé. Si plusieurs éditions sont inévitables, enregistrez les versions de travail dans un format intermédiaire sans perte (PSD, TIFF) et ne comprimez en JPEG qu'à la sortie finale.
8. Résumé et aide-mémoire des paramètres
Le cœur de la compression JPEG est d'échanger de l'information fréquentielle contre de la taille de fichier, et le facteur de qualité est essentiellement un bouton qui met à l'échelle la table de quantification. Q75 est le nombre magique parce qu'il se pose précisément sur le point d'inflexion de la courbe de quantification : monter plus haut gonfle la taille sans gain de qualité perceptible ; descendre plus bas commence à rendre les artefacts de blocage visibles. Combiné à une réduction de résolution raisonnable, Q75 permet à une photo de plusieurs mégapixels d'apparaître sur le web en quelques centaines de kilo-octets avec une perte visuelle négligeable.
Une fois les principes compris, le choix des paramètres cesse d'être deviné. Cet aide-mémoire est pour référence quotidienne :
| Scénario | Format recommandé | Facteur de qualité | Résolution | Taille attendue |
|---|---|---|---|---|
| Image d'article web (photo) | JPEG | 75–80 | Grand côté ≤ 1920px | 200–400 Ko |
| Vignette web | JPEG | 70 | Grand côté ≤ 400px | 15–40 Ko |
| Icône / élément d'interface | PNG | — | Original | Variable |
| Capture d'écran de texte | PNG | — | Original | Variable |
| Fond transparent | WebP / PNG | — | Original | — |
| Archive photo haute résolution | JPEG | 90–95 | Original | 2–5 Mo |
| Sortie impression | TIFF / PNG | — | ≥ 300 DPI | Illimitée |
| Site moderne, taille minimale | WebP | 75–80 | Grand côté ≤ 1920px | 150–300 Ko |
Maîtrisez la ligne directrice — conversion d'espace colorimétrique → DCT → quantification → codage entropique — comprenez comment le facteur de qualité met à l'échelle la table de quantification, puis combinez-le avec la réduction de résolution et le choix du format, et la compression d'image passe de « régler les paramètres au feeling » à une décision d'ingénierie fondée sur des preuves.
Lectures associées :
- Guide de compression d'images : comparaison et choix des formats JPG/PNG/WebP
- Guide complet de la compression de fichiers : principes et méthodes de compression PDF/image/vidéo/document
Besoin de compresser des fichiers ? Essayez SmartSlim
Basé sur un moteur de compression Rust développé en interne, prenant en charge 10 catégories et plus de 40 formats dont PDF, images, vidéo, Office et OFD, avec une compression locale qui conserve vos données sur place.