Qu’est-ce que PJPEG ?

PJPEG désigne couramment le JPEG progressif, qui stocke une image en plusieurs balayages. Un décodeur peut afficher une version grossière de l’image entière avant que les balayages suivants n’ajoutent des détails plus fins.

Fonctionnement de PJPEG

Un JPEG progressif répartit les informations des coefficients en une séquence de balayages, plutôt que d’encoder entièrement chaque région de l’image en une seule passe. Les premiers balayages établissent la structure générale de l’image entière, puis les suivants apportent des détails fréquentiels supplémentaires ou une précision accrue des coefficients. Il fait toujours partie de l’écosystème JPEG classique et peut donc suivre les chaînes habituelles de traitement des ressources photographiques, mais l’affinement visible dépend à la fois du décodeur et du logiciel d’affichage.

Points clés

  1. Le JPEG progressif est un mode de la norme JPEG, et non un format distinct : les mêmes coefficients DCT quantifiés sont répartis sur plusieurs balayages, par sélection spectrale (bandes de coefficients), approximation successive (bits de poids fort en premier), ou les deux. Il ne s’agit pas d’un empilement de miniatures encodées indépendamment. Un analyseur peut lire le mode dans le marqueur d’en-tête d’image : FF C2 (SOF2) pour un fichier progressif codé par Huffman, FF C0 (SOF0) pour le mode de base.
  2. Ni l’extension du fichier ni le type de média n’identifient le mode. Les fichiers progressifs conservent normalement .jpg ou .jpeg, ainsi que image/jpeg ; MDN répertorie également .pjpeg et .pjp comme extensions JPEG. image/pjpeg ne figure pas dans le registre de l’IANA. Il s’agit de l’appellation que la détection MIME d’Internet Explorer renvoyait pour les données JPEG en général, à des fins de rétrocompatibilité. Un fichier téléversé portant l’étiquette image/pjpeg n’est donc pas nécessairement progressif, et une liste d’autorisation prenant en compte ces anciens clients doit le traiter comme du JPEG et inspecter son contenu.
  3. Décoder un fichier progressif et afficher ses passes intermédiaires sont deux choses distinctes. libjpeg-turbo ne renvoie que l’image finale, sauf si l’application utilise son mode d’image mise en mémoire tampon, et sa documentation indique que chaque passe affichée demande à peu près autant de travail que le décodage d’une image complète. Un fichier à plusieurs balayages nécessite également un tampon de coefficients pour l’image entière, là où un fichier à un seul balayage n’a besoin que de tampons proportionnels à la largeur de l’image. Les outils de libjpeg-turbo proposent aussi une limite du nombre de balayages, car des fichiers spécialement conçus avec un très grand nombre de balayages peuvent consommer excessivement le processeur. Prévoyez la mémoire nécessaire et plafonnez le nombre de balayages lors du décodage de fichiers téléversés non fiables.
  4. À réglage de qualité identique, un fichier progressif se décode en restituant la même image finale qu’un fichier séquentiel et présente une taille à peu près équivalente, souvent légèrement inférieure, selon la documentation de libjpeg-turbo. Choisissez-le pour l’affichage progressif, et non pour réduire la taille. La norme n’exige pas que les implémentations fournissent tous les modes, et certains décodeurs embarqués, tels que TJpgDec, ne prennent en charge que le mode de base.

Quand PJPEG est utile

Choisissez le JPEG progressif lorsqu’un premier aperçu visuel pendant le téléchargement d’une photographie volumineuse est utile. Les principaux navigateurs et bibliothèques d’imagerie décodent les balayages progressifs de manière fiable ; réservez donc les vérifications de compatibilité aux cibles contraintes, comme les décodeurs embarqués ou matériels qui n’implémentent que le JPEG de base.

Comment Transloadit vous aide avec PJPEG

Le Robot /image/resize de Transloadit possède un paramètre progressive qui entrelace la sortie afin que les navigateurs puissent afficher une version basse résolution de l’image entière avant l’arrivée du reste des données ; il est désactivé par défaut. Le tableau des formats d’image répertorie également PJPEG, aux côtés de JPG et JPEG, comme un nom de format que ses Robots basés sur ImageMagick peuvent lire et écrire.

La documentation du Robot indique un surcoût en taille de fichier pour progressive, sans préciser à quels formats de sortie l’option ou ce surcoût s’applique. La documentation de libjpeg-turbo décrit les fichiers JPEG progressifs comme ayant une taille à peu près équivalente à celle des fichiers séquentiels, souvent légèrement inférieure : mesurez donc le résultat avec vos propres images. La documentation ne décrit pas ce que le choix de PJPEG comme format de sortie change par rapport à JPG.

Explorer les possibilités de Transloadit en matière de formats de fichiers et de compression

Références

Transformer vos connaissances sur les médias en une chaîne de traitement opérationnelle

Reliez les téléversements, le traitement, l’IA, le stockage et la diffusion via une seule API déclarative — la pile d’encodage, la montée en charge et l’évolution constante des formats sont prises en charge pour vous.

Essayer Transloadit gratuitement