Design numérique

Images / Les différents formats d'images web

En web-design, les images sont un aspect tout à fait essentiel mais difficile à gérer correctement, que ce soit du point de vue de la mise en page (la plupart d’entre vous avez fait l’expérience des grids et autres flex-boxs du démon) ou de la connsomation de bande passante. Aujourd’hui, nous allons faire un pas de côté du design vers la programmation, et endosser temporairement, notre casquette de déveleppeuses (et développeurs), afin de comprendre les enjeux techniques et esthétiques de la diffusion d’images sur le web.

Les images : du scan au site

En tant que graphistes formés à la création de livres, chacun d’entre nous fait l’expérience de la peur panique du pixel visible. Une image imprimée, agrandie au-delà de son nombre de points par pouce (résolution) ou qui comporte trop peu de points par pouce (une trop faible résolution), révélera, parrallèlement à son objet, les points qui la compose: ont la dira "pixellisée". L’image pixellisée est le cauchemard du graphiste (et plus encore du photograveur). D’où notre tendence, lorsque nous scannons un visuel, à choisir la résolution la plus haute, quitte à obtenir des images incroyablement lourdes, dont chaque pouce comporte des milliers de pixels.

Choisir la résolution maximale au moment du scan est un choix sage, pour celui qui possède un large espace disque. Il garantit que l’image puisse être imprimée dans des dimensions importantes, sans perte de qualité, et plus encore, laisse ouvertes une myriade de possibilités d’impressions et de traitement (zoom, agrandissement, déclinaison à différents supports...). Nénamoins, il y a quelque chose d’un peu ridicule dans le fait d’utiliser des millions de pixels pour décrire une image qui sera imprimée en tout petit, ou par une imprimante incapable de rendre une résolution si élevée. Un conseil : toujours se poser à minima la question de la destination. Toutes les images n’ont pas besoin d’être démesurément définies, surtout si les imprimantes ou les écrans qui les reproduisent ne peuvent rendre compte de toutes leurs subtilités.

En web, l’enjeu de la pixellisation des images ne disparait pas, mais est adossé à une contrainte supplémentaire, absente, ou plutôt moins présente, dans le cas du print : le poids (size en anglais). Un site web, comme expliqué précedement, est une série de fichiers téléchargés depuis un serveur vers un ordinateur client, puis, lus par cet ordinateur client. Plus le site est lourd, plus le temps de téléchargement sera important, et donc, plus le site mettra du temps à apparaitre, et plus il consomera de bande passante. Il faut donc faire en sorte qu’il soit le plus léger possible, afin de garantir un affichage rapide et un coût minimal en données, tout en conservant une qualité d’image optimale.

Afin de réaliser cet exploit, il nous faut retourner à l’essence de l’image numérique.

Images matricelles & images vectorielles

Une image matrcielle est une image composée d’une série de pixels[1], où chacun des pixels peut prendre une série de valeurs, qui correspondent à une couleur. Les images matrcielles diffèrent des images vectorielles qui sont décrites par une série de points et de tracés les reliant (contours). Elles représentent l’écrasante majorité des images en circulation sur web, c’est pourquoi nous allons nous concertrer sur elles, leur traitement, et les paramètres qui les définissent :

Le terme résolution peut s’avérer difficile car, appliqué à un écran (display), il désigne le nombre total de pixels que cet écran est capable d’afficher (display resolution, screen resolution), ou ce que nous avons appelé définition dans le cas d’une image. Le pixel est une unité par définition relative à l’écran d’un ordinateur. La taille en unité absolue d’un pixel dépend de la taille (en pouce) et de la résolution (en pixels) de l’écran. Plus l’écran est permformant, plus il est capable d’afficher de pixels pour une zone donnée, et donc, plus un pixel sera petit, et plus les images apparaiteront détaillées. Pour la plupart des appareils, il est possible de faire varier la résolution d’un écran, c’est-à-dire de modifier (toujours réduire) le nombre de pixels total que l’écran va afficher. Par exemple, si votre écran est capable d’afficher 1920 x 1080 pixels (full HD), vous pouvez modifier les paramètres de votre système de telle sorte qu’une résolution moins importante comme 1366 x 768 pixels (HD) soit utilisée pour rendre les contenus. Dans les deux cas, un pixel n’aura donc pas la même taille en unité absolue.

Définition, résolution et taille d’image appliqués au web

La densité de pixels necessaire à une image web est totalement déconnectée de la densité de pixels de l’appareil qui va la rendre, c’est-à-dire du nombre de pixels par pouce que l’écran de l’appareil client est capable d’afficher. Ce qui compte sont les pixels eux-mêmes, c’est-à-dire la défintion, le nombre de pixels total qui composent l’image. La notion de pixel par pouce n’a pas de sens car l’ordinateur affichera tous les pixels de l’image suivant la résolution de l’écran qui la rend, sans considération aucune pour la taille en unité absolue donnée à l’image (cm, mm, pouce...), qui n’est valable que dans un contexte d’impression. Il est déconseillé d’utiliser des unités absolues en CSS pour définir la taille des images, notemment car cela peut aboutir à étirer ou réduire inutilement une image suivant l’écran qui la rend, car un nombre de pixels varaible sera contenu dans une unité absolue (1 cm ne comporte par le même nombre de pixels suivant la résolution de l’écran).

Ce qu’il nous faut regarder lorsque l’on prépare des images pour le web, c’est le nombre de pixels contenus dans cette image. En sachant qu’un écran 5k (5000) est capable d’afficher 5120 x 2880 pixels, il apparait complemetement inutile, dans un contexte web, d’utiliser des images avec une définiton supérieure, car celles-ci ne seront quasiment jamais vues dans leurs dimensions réèlles. De plus, une image de 5120 x 2880 pixels serait utile seulement dans le cas où celle-ci serait affichée en plein écran sur le site web! En plus de se poser la question des écrans et de leur capacité, il faut également se poser la question de la mise en page du site, et de la taille qu’une image est suceptible de prendre dans ce contexte précis. Et pour finir, dans le cas de résolutions très importantes, les navigateurs affichent nativement généralement les sites web dans une résolution inférieure à la capacité de l'écran, par fois de deux fois! Ce qui signifie que la taille maximale dans laquelle notre image sera vue dans le cas d'une résolution 5k sera non pas 5120 pixels, mais 2560.

La balise picture

Il existe depuis peu une balise en CSS qui permet de charger une image différente selon la taille de l’écran qui la rend, ce qui représente une gain énorme en terme de bande passante. Cette balise s’appelle picture. Utiliser cette balise necessite de générer plusieurs copies de la même image, avec plusieurs définitions correspondants aux différents seuils mis en place par la balise (elle fonctionne sur un principe similaire au max-width CSS responsive). La balise picture permet également de charger le format d’image supporté par le navigateur client. Certains formats d'image très performants mais nouveaux (comme le webp, voir plus bas) ne sont pas supportés par les naviagteurs les plus anciens. Grâce à la balise picture, il est possible d'intégrer plusieurs formats pour une même image, ce qui permet au navigateurs de charger le format le plus efficace qu'il supporte. Le principe est simlaire à celui utiliser pour le chargement des fonts.

Ainsi, le gain en bande passante se paye par une complexité du code accrue, et par la consomation d’espace disque par différentes copies de la même image. Rien n’est gratuit. Cette technique est largement utilisé dans un contexte profesionel, mais nous n’allons néanmoins pas en voir le détail aujourd’hui : notre stratégie consistera plutôt à générer une seule image, qui devra fonctionner sur toutes les tailles d’écran.

Espace colorimétrique & web

Lorsque l’on prépare des images pour le web, il faut veiller, dans le cas de format d’images matrcielles compatibles avec le CMJN, à bien convertir leur espace colorimétrique en RVB si necessaire. Une image décrite en CMJN apparaitera si elle est insérée dans un site web, mais son poids sera inutilement plus important. De plus, une image en espace colorimétrique CMJN affichée sur un écran reste essentiellement une traduction étant donné qu’elle est décrite par des niveaux d’encres et non pas de lumières. Dans le cas d’images destinées à être vues exclusivement sur des écrans et jamais imprimées, il est inutile de passer par cette étape supplémentaire sujette à interprétation, et préférable d’utiliser la description lumineuse appropriée (l’espace colorimétrique RVB).

Principaux formats d’image web: choisir le format adapté à ses besoins

Un format est une somme de données numériques (nombres) destinée à être interprétée par un ordinateur (ou une autre machine) selon une série de règles pré-établies, qui visent ici à rendre une image, matricielle ou vectorielle, numérique ou imprimée.

Les principaux formats d’images destinés au web sont: png, jpg, gif, bmp, svg et pour finir webp. Chacun d’entre eux possèdent des spécificités :

Préparer des images pour le web: 3 règles essentielles

1 / Choisir le format approprié

Mon image comporte-t-elle de la transparence ? Une animation ? Est-ce que je peux la compresser sans perte significative de qualité ? Qu’est ce qui est le plus important pour mon site web, un support 100% des images pour tous les navigateurs ou un chargement ultra-rapide ? La réponse à ces questions dépend du contexte d’application de votre site web et des priorités que vous établissez !

2 / Donner une définition (dimensions) d’image appropriée

Pour tester directement la taille d’une image, je vous conseille de l’ouvrir dans un navigateur, sans passer par un site web. Si la taille est supérieure à la taille de votre écran, il faut vous demander directement si elle ne devrait pas être redimensionée.

3 / Veiller à conserver un espace colorimétrique approprié

Ou dit autrement, bannir absoluement le CMJN. Suivant les formats d’images que vous choisirez d’utiliser, l’espace colorimétrique pourra être RVB ou parfois Grayscale ou Bitmap :)

La péréapration des images pour le web dépend beaucoup du contexte, et necessite de toujours se poser la question des appareils de rendu, ainsi que de la mise en page. Il n’y a pas de dimensions et de formats magiques !

Des logiciels de préparation

  1. Photoshop

Photoshop reste un outil essentiel pour préparer des images pour le web, lorsque l’on travaille en statique. Suivant la mise en page de votre site web, il est possible d’utiliser la fonction Script pour donner des dimensions similaires à une série d’images avec un gabarit similaire.

  1. ImageMagick

ImageMagick est un logiciel en ligne de commande absolument magnifique (et je peèse mes mots) qui permet d’appliquer des transformations d’images depuis un terminal. Il est largement utiliser pour redimensionner des images à la volée dans des contextes de sites web dynamiques.

Pour rappel : toutes les images générées pour le web doivent être des COPIES. Veillez à toujours conserver une version de travail de chacune de vos images dans un format non-destructeur, ou alors à ne pas travailler directement dans l’image de base (en JPG pour la plupart des appareils photo).



[1] Le mot pixel désigne une unité de surface permettant de décrire une image numérique. Concretement, il s’agit d’un zone carrée, qui comporte une certaine teinte chromatique.