Aller au contenu

Comment créer un BlurHash et un LQIP JPEG à partir d’une image

L’atelier lit une image locale avec le décodeur du navigateur, la dessine sur un canevas de 160 px au maximum sur le côté le plus long, puis encode ces pixels deux fois : en chaîne BlurHash et en URL de données JPEG compacte. Les deux sont des espaces réservés de la même image, et aucun ne quitte l’onglet.

L’aperçu de gauche est le hash décodé à nouveau à la forme de l’original, celui de droite est le JPEG qui vient d’être produit : les deux cadres montrent donc ce que verra un visiteur pendant le chargement de l’image réelle. La ligne du dessous indique la taille de la source, la longueur de la chaîne et le poids du JPEG.

  1. Choisissez une image locale. Tout format que le navigateur sait décoder convient — JPEG, PNG, WebP — et un fichier animé est lu sur sa première image ; le GIF de test de 120 × 60 a produit un espace réservé rouge à partir de celle-ci. La ligne d’état confirme le nom du fichier dès que l’image est prête.
  2. Réglez les deux composantes BlurHash, X pour les colonnes et Y pour les lignes, de 1 à 9, 4 × 3 par défaut. Plus de composantes gardent plus de détail et allongent la chaîne ; une valeur hors plage revient à 9 ou à 1, et un champ vide retrouve sa valeur par défaut.
  3. Réglez la largeur du LQIP, de 8 à 96 px, 32 par défaut. C’est la largeur en pixels du JPEG, pas une taille d’affichage : la hauteur suit les proportions de l’original et le fichier reste dans l’ordre du kilooctet à toutes les largeurs permises.
  4. Pressez Générer des espaces réservés. Le hash décodé et le JPEG apparaissent côte à côte, la ligne d’informations affiche les chiffres et une image transparente est aplatie sur blanc dans les deux sorties.
  5. Récupérez le résultat avec Copier BlurHash, Copier LQIP URL ou Télécharger LQIP — le fichier est enregistré sous voritools-lqip.jpg. Effacer vide le sélecteur et les deux sorties, et remet les champs à 4 × 3 et 32.

Ce que contiennent la chaîne, le JPEG et les deux aperçus

Ce que contient la chaîne BlurHash

Un BlurHash est un texte court qui encode une version floue de l’image. Les premiers caractères portent la grille de composantes et un maximum quantifié, puis viennent la couleur moyenne et un coefficient par cellule. Avec la grille 4 × 3 par défaut, la chaîne mesurait 28 caractères ; une seule composante 1 × 1 donnait 6 caractères et une couleur unie, le maximum 9 × 9 en donnait 166 et conserve le plus de structure.

La chaîne est destinée à un décodeur BlurHash dans votre propre page : les bibliothèques de référence en JavaScript, PHP, Swift ou Kotlin, le composant React ou un CDN d’images qui accepte un hash. Elle ne contient ni largeur, ni hauteur, ni métadonnée : le décodeur la dessine à la taille demandée. Cette page encode, et décode aussi son propre hash pour l’aperçu, mais elle n’accepte pas un hash en entrée.

Le JPEG LQIP et son URL de données

La seconde sortie est un vrai JPEG, écrit à la largeur choisie avec une compression fixe (qualité 0,58). Sur l’échantillon 800 × 500 utilisé pour les essais, la largeur par défaut de 32 px a produit une URL de données de 987 octets — 1 Ko dans la ligne d’informations — et 96 px sont restés sous 1,6 Ko. La ligne d’informations affiche le chiffre exact pour votre image.

Comme c’est une URL de données, elle se colle directement dans un src d’img, un background-image CSS ou un picture, sans seconde requête. Le JPEG n’a pas de canal alpha : les zones transparentes sont peintes en blanc — le même aplatissement que celui utilisé pour le hash — et le fichier garde les proportions de l’original. Télécharger l’enregistre sous voritools-lqip.jpg.

Traitement local, précision et limites

L’image est lue, dessinée et encodée dans la page. Rien du fichier n’est transmis, il n’y a ni compte ni étape de téléversement, et l’outil continue de fonctionner hors ligne une fois la page chargée. Le résultat est également reproductible : la même image avec les mêmes composantes et la même largeur donne toujours la même chaîne et le même JPEG.

L’encodeur applique l’algorithme de référence BlurHash ; les hashs produits ici ont été comparés à l’implémentation de référence et correspondent, donc un autre décodeur dessine le même espace réservé. Les seules limites réelles viennent du navigateur : une très grande photo ne pose pas de problème puisque l’encodage échantillonne à 160 px, mais l’onglet doit d’abord décoder le fichier, et un format que le navigateur ne lit pas doit être converti au préalable.

Outils récents :