Article de reference

WebP

WebP ( prononcé / wɛpi / ) ] ] est un format de fichier raster développé par Google et destiné à remplacer les formats JPEG , PNG et GIF sur le Web. Il prend charge la compressi...

WebP ( prononcé / wɛpi / )] ] est un format de fichier raster développé par Google et destiné à remplacer les formats JPEG , PNG et GIF sur le Web. Il prend charge la compression d'image ( avec et sans perte ) [13], animation et la composition alpha . Son équivalent pour la vidéo est WebM .

Google a annoncé le format WebP en septembre 2010 ; la société a publié la première version stable de sa bibliothèque de support en avril 2018. WebP a été largement adopté sur Internet afin de réduire la taille des images, et tous les principaux navigateurs prennent actuellement en charge ce format.

Histoire

WebP a été annoncé pour la première fois par Google le 30 septembre 2010 comme un nouveau format ouvert pour les graphiques en couleurs réelles compressés avec perte sur le Web, produisant des fichiers plus petits que les fichiers JPEG pour une qualité d'image comparable. Il était basé sur une technologie que Google avait acquise lors du rachat d' On2 Technologies . Dérivé du format vidéo VP8 , il est un projet frère du format conteneur multimédia WebM . Les logiciels liés à WebP sont distribués sous une licence de logiciel libre BSD .

Le 3 octobre 2011, Google a ajouté un « Extended File Format » permettant la prise en charge WebP pour l'animation , les profils ICC , les métadonnées XMP et Exif , et le pavage (composition d'images très volumineuses à partir de pixels de taille maximale) .16 384 × 16 384 tuiles). La prise en charge des tuiles n’a jamais été finalisée et a de nouveau été retirée des spécifications.

Le 18 novembre 2011, Google a annoncé un nouveau mode de compression sans perte et la prise en charge de la transparence ( canal alpha ) en modes avec et sans perte ; cette prise en charge a été activée par défaut dans libwebp 0.2.0 (16 août 2012). Selon les mesures effectuées par Google en novembre 2011, la conversion de PNG en WebP entraînait une réduction de 45 % de la taille des fichiers à partir de PNG trouvés sur le Web, et une réduction de 28 % par rapport aux PNG recompressés avec pngcrush et PNGOUT .

En juillet 2016, Apple a ajouté la prise en charge de WebP aux premières versions bêta de macOS Sierra et d'iOS 10, mais cette prise en charge a ensuite été supprimée dans les versions GM seed d'iOS 10 et de macOS Sierra publiées en septembre 2016. En septembre 2020, la prise en charge de WebP a été ajoutée dans Safari version 14.

La bibliothèque libwebp de support a atteint la version 1.0 en avril 2018.

En novembre 2024, WebP a été officiellement spécifié et publié sous le nom de RFC 9649 .

Technologie

WebP simple
Octets Contenu
0–3 RjeFF
4–7 longueur + 12
8–11 WEBP
12–15 VP8(espace)
16–19 longueur (rembourrée)
20–… Image clé VP8
tampon? (longueur paire)

L'algorithme de compression avec perte de WebP repose sur le codage intra-image du format vidéo VP8 et utilise le format RIFF ( Resource Interchange File Format ) comme conteneur . Il s'agit donc d'un schéma de transformation par blocs avec une profondeur de couleur de huit bits et un modèle de luminance-chrominance avec sous-échantillonnage de la chrominance selon un ratio de 1:2 ( YCbCr 4:2:0). Sans contenu supplémentaire, le conteneur RIFF obligatoire n'occupe que vingt octets, bien qu'il puisse également contenir des métadonnées additionnelles. La longueur des côtés des images WebP est limitée à16 383 pixels.

WebP repose sur la prédiction par blocs. Chaque bloc est prédit à partir des valeurs des trois blocs situés au-dessus et du bloc situé à sa gauche (le décodage des blocs s'effectue selon l'ordre de balayage raster : de gauche à droite et de haut en bas). Il existe quatre modes de prédiction par blocs : horizontal, vertical, DC (une seule couleur) et TrueMotion. Les données mal prédites et les blocs non prédits sont compressés dans un sous-bloc de 4×4 pixels par une transformée en cosinus discrète ou une transformée de Walsh-Hadamard . Ces deux transformées sont effectuées avec une arithmétique à virgule fixe afin d'éviter les erreurs d'arrondi. La sortie est compressée par encodage entropique . WebP prend également en charge le décodage parallèle.

L' implémentation de référence consiste en un logiciel de conversion sous la forme d'un programme en ligne de commande pour Linux (cwebp) et d'une bibliothèque de programmation pour le décodage, identique à celle utilisée pour WebM. La communauté open-source a porté le convertisseur sur d'autres plateformes, telles que Windows.

Le conteneur WebP (c'est-à-dire le conteneur RIFF pour WebP) offre des fonctionnalités supplémentaires par rapport à l'utilisation de base de WebP (c'est-à-dire un fichier contenant une seule image encodée sous forme d'image clé VP8). Le conteneur WebP prend notamment en charge :

Métadonnées
Une image peut contenir des métadonnées stockées aux formats Exif ou XMP.
Transparence
Une image peut présenter une transparence, c'est-à-dire un canal alpha.
Profil de couleur
Une image peut contenir un profil ICC intégré, tel que décrit par l'International Color Consortium.

Compression sans perte

La compression sans perte WebP, un algorithme plus récent et sans lien avec VP8, a été conçue par Jyrki Alakuijala, ingénieur logiciel chez Google. Elle utilise des techniques avancées telles que des codes d'entropie dédiés aux différents canaux de couleur, exploitant la localité 2D des distances de référence et un cache de couleurs récemment utilisées. Ceci complète des techniques de base comme le codage par dictionnaire , le codage de Huffman et la transformation d'indexation des couleurs. Ce format utilise une définition récursive : toutes les images de contrôle, comme la sélection du code d'entropie local, sont encodées de la même manière que l'image entière.

Animation

Google a proposé l'utilisation du format WebP pour les images animées, en remplacement du format GIF très répandu . Il met en avant ses avantages : une profondeur de couleur de 24 bits avec transparence, la possibilité de combiner des images avec compression avec et sans perte au sein d'une même animation, et la prise en charge de la navigation vers des images spécifiques. Google annonce une réduction de 64 % de la taille des fichiers pour les images converties de GIF animés en WebP avec compression avec perte, et une réduction de 19 % pour le WebP sans perte.

Soutien

navigateurs Web

En 2024, les navigateurs Web prenant en charge WebP détenaient 97 % de parts de marché.

Google encourage activement le format WebP. Son outil propriétaire PageSpeed ​​Insights suggère aux webmasters de passer du JPEG et du PNG au WebP afin d'améliorer le score de vitesse de leur site web.

Google Chrome et tous les navigateurs basés sur Chromium prennent en charge WebP. La prise en charge de WebP avec perte a été ajoutée à Chrome pour ordinateur dans la version 17 (publiée en février 2012) et la prise en charge de WebP sans perte dans la version 23 (publiée en novembre 2012) ; la prise en charge de WebP avec et sans perte a été ajoutée à Google Chrome pour Android dans la version 25 (publiée en mars 2013).

Les versions de Microsoft Edge publiées après janvier 2020 sont basées sur le navigateur Chromium et prennent en charge nativement le format WebP. Les versions de Microsoft Edge basées sur EdgeHTML prennent en charge WebP via une extension de plateforme (installée par défaut) (sauf en mode de sécurité renforcée « Application Guard », qui ne prend pas en charge les extensions de plateforme).

Safari a ajouté la prise en charge de WebP en septembre 2020 avec iOS 14 et macOS Big Sur .

Mozilla Firefox prend officiellement en charge WebP depuis janvier 2019. Son implémentation avait été initialement envisagée en 2013.

Pale Moon a implémenté la prise en charge initiale de WebP en janvier 2016 avec sa version 26.

SeaMonkey a commencé à prendre en charge WebP avec sa version 2.53.5 publiée en novembre 2020.

GNOME Web , Midori et Falkon prennent en charge nativement WebP.

WebP peut également être affiché dans tous les principaux navigateurs à l'aide de la bibliothèque JavaScript WebPJS, bien que la prise en charge dans Internet Explorer 6 et supérieur soit réalisée à l'aide de Flash .

La prise en charge de WebP a été ajoutée à Links dans la version 2.26.

Logiciel graphique

Après l'annonce de WebP en septembre 2010, les logiciels ont progressivement commencé à le prendre en charge. Dès 2011, des plugins étaient disponibles pour plusieurs logiciels graphiques populaires afin de prendre en charge WebP, et certains programmes tels qu'Acorn et Pixelmator l'intégraient nativement. Au fil du temps, la prise en charge du format WebP s'est étendue.

En 2019, Google a publié un module d'extension gratuit permettant la prise en charge du format WebP dans les versions antérieures d' Adobe Photoshop . Des modules d'extension gratuits pour Photoshop avaient déjà été publiés par Telegraphics et fnordware. GIMP, jusqu'à la version 2.8, prenait également en charge le format WebP via un module d'extension ; ce module a ensuite été intégré à la branche GIMP 2.9 et a bénéficié de plusieurs améliorations. Google a également publié un module d'extension pour Microsoft Windows qui permet la prise en charge du format WebP dans la Visionneuse de photos Windows , Microsoft Office 2010 , FastPictureViewer , et toute autre application utilisant le composant d'imagerie Windows .

Autres programmes

FFmpeg, associé à la bibliothèque de codecs de référence VP8/VP9 libvpx, peut extraire les images clés VP8 des flux WebM. Un script peut ensuite ajouter l'en-tête RIFF WebP et le caractère nul de remplissage pour les images de longueur impaire. Par ailleurs, FFmpeg prend directement en charge libwebp .

Gmail et Google Photos prennent tous deux en charge le format WebP. La prise en charge de WebP est également prévue pour Google App Engine . La fonctionnalité d'aperçu instantané de la recherche Google utilise WebP en interne afin de réduire l'espace disque occupé par les aperçus. Android 4.0 prend en charge l'encodage et le décodage des images WebP (via bitmap et Skia ). SDL_image prend en charge ce format depuis la version 1.2.11.

Sumatra PDF prend en charge les images WebP pour les fichiers autonomes et les bandes dessinées depuis la version 2.4.

Telegram Messenger utilise WebP pour ses stickers, affirmant qu'ils s'affichent cinq fois plus rapidement que les autres formats habituellement utilisés dans les applications de messagerie.

Signal utilise WebP pour ses autocollants non animés.

LibreOffice prend en charge l'importation d'images WebP depuis la version 7.4, tout comme le bureau en ligne basé sur la technologie LibreOffice Collabora Online .

Le moteur Godot, à partir de la version 4.0, prend en charge l'importation et l'exportation d'images WebP et utilise WebP comme format interne pour stocker les textures compressées importées.

Les systèmes de gestion de contenu (SGC) ne prennent généralement pas en charge le format WebP nativement ou par défaut. Cependant, pour la plupart des SGC populaires, des extensions sont disponibles pour la conversion automatique d'autres formats d'image vers WebP et la diffusion des images WebP vers les navigateurs compatibles. Depuis juin 2021, WordPress prend en charge le format WebP nativement.

Les services de médias sociaux connus pour prendre en charge nativement WebP dans les messages incluent Facebook , Slack , Discord et Element ; cependant, certains de ces services ne prennent en charge que WebP statique et non WebP animé.

Inconvénients et critiques

À l'instar du VP8 dont il est dérivé, le WebP avec perte ne prend en charge que le format YUV 4:2:0 8 bits , ce qui peut entraîner une perte de couleur sur les images présentant des éléments à faible contraste (comme dans le pixel art et l'infographie ) et un effet de rémanence en anaglyphe . Le WebP sans perte prend en charge l'encodage VP8L, qui fonctionne exclusivement avec l'espace colorimétrique RGBA (rouge, vert, bleu, alpha) 8 bits Il ne prend pas en charge la profondeur de couleur 10 bits, contrairement à ses successeurs, le HEIC et l'AVIF, qui ont intégré cette fonctionnalité.

En raison de la complexité de leur méthode de compression, les fichiers WebP prennent beaucoup plus de temps à créer que les autres formats d'images Web. Il n'est donc pas toujours conseillé de traiter les images WebP à la demande, par exemple dans le contexte des services de cartographie Web .

En octobre 2013, Josh Aas de Mozilla Research a publié une étude exhaustive des techniques d'encodage avec perte actuelles et n'a pas pu conclure que WebP surpassait JPEG de manière significative.

Vulnérabilité

En septembre 2023, deux vulnérabilités critiques relatives aux images WebP ont été découvertes par Apple Security Engineering and Architecture (SEAR) et le Citizen Lab, affectant potentiellement libwebp elle-même, Google Chrome et d'autres navigateurs basés sur Chromium, ainsi que toute autre application utilisant la bibliothèque.

La vulnérabilité CVE-2023-4863 était la plus activement exploitée des deux, avec un niveau de risque élevé de CVSS 8.8 , ce qui signifie qu'elle pouvait conduire à un dépassement de tampon dans les applications utilisant la bibliothèque affectée, lors de l'exploitation d'un fichier .webp sans perte conçu de manière malveillante, entraînant un déni de service (DoS), ou pire encore, permettant l'exécution de code à distance malveillant (RCE).

L'utilisation intensive des packages libwebp dans des centaines d'applications, des navigateurs Web aux applications mobiles, a constitué un défi majeur en matière de correction de la vulnérabilité, en raison des exigences élevées en matière de tests préalables à la publication, ce qui souligne les implications à grande échelle de cette vulnérabilité.

Plusieurs navigateurs web, dont Google Chrome , Firefox , Microsoft Edge et Brave , ont publié des correctifs de sécurité suite à la découverte de cette vulnérabilité. Cette vulnérabilité a finalement été corrigée dans la version 1.3.2 de libwebp.

WebP 2

Google a commencé à développer une deuxième version de WebP, simplement nommée WebP 2, en juin 2021, dont l'objectif était d'atteindre des taux de compression similaires à ceux d' AVIF tout en restant plus rapide à encoder et à décoder ; son ​​implémentation de référence est libwebp2.

Le 12 octobre 2022, Google a modifié le fichier README du dépôt de développement de WebP 2 pour indiquer que « WebP 2 ne sera pas publié en tant que format d'image » et a décrit la version comme un « terrain de jeu pour les expériences de compression d'images ».