Online Tool Store Online Tool Store

Générateur BlurHash

Encodez les images en BlurHash pour charger plus vite. Réglez les composants, décodez les hashes et vérifiez les erreurs couleur. Complètement navigateur.

Cet outil fonctionne entièrement dans votre navigateur. Vos fichiers ne sont jamais envoyés sur un serveur.

Source

Placeholder décodé

Uniquement au décodage ; non stocké dans le hash.

Un BlurHash est une chaîne que vous stockez à côté d'une image et que vous développez en un placeholder flou au moment de l'affichage — pour que la mise en page montre quelque chose de pertinent avant l'arrivée de l'image réelle, sans seconde requête réseau. Votre client a besoin d'un décodeur pour l'afficher ; le bouton d'URI de données vous donne à la place une image déjà prête, qui ne nécessite pas de décodeur mais est plus volumineuse. Rien n'est envoyé.

Comment l'utiliser

  1. Déposez une image, choisissez un fichier ou collez-en une avec Ctrl+V — un exemple est déjà encodé pour que vous voyiez la forme du résultat.
  2. Laissez le détail à 4 × 3 sauf si vous avez une raison de le changer.
  3. Copiez le hash et stockez-le dans la même ligne ou le même enregistrement que l'image elle-même.
  4. Décodez-le dans votre client, ou utilisez les boutons d'URI de données ou de téléchargement si vous préférez ne pas ajouter de décodeur.

Ce que vous obtenez réellement

La longueur est fixée par le nombre de composants : quatre caractères d'en-tête plus deux par composant. Cela rend la taille entièrement prévisible avant même d'encoder quoi que ce soit :

1 × 1 6 caractères couleur moyenne unie 3 × 3 22 caractères zones claires et sombres approximatives 4 × 3 28 caractères la valeur par défaut habituelle 9 × 9 166 caractères gains décroissants

Vingt-huit octets, c'est assez peu pour être inclus gratuitement dans la réponse JSON qui liste vos images — plus petit que la plupart des en-têtes HTTP à eux seuls. C'est tout l'intérêt du format : le placeholder arrive avec les métadonnées, dans la requête que vous alliez déjà faire, donc il n'y a pas de second aller-retour avant que la page puisse afficher quelque chose. La transformation s'exécute aussi en lumière linéaire plutôt que sur les octets sRGB bruts : moyenner directement des valeurs encodées en gamma produit ce flou trouble et trop sombre que l'on voit parfois. L'effet est plus visible avec un seul composant, où le hash n'est rien d'autre qu'une moyenne — un dégradé de test dont la moyenne des octets sRGB vaut rgb(130, 110, 95) se décode en rgb(147, 116, 103) en 1 × 1, et le résultat linéaire est celui qui est physiquement correct, celui que l'on mesurerait en défocalisant un appareil photo pointé sur l'image. Avec davantage de composants, l'écart sur la moyenne globale se réduit à un ou deux niveaux sur 255.

Questions fréquentes

Puis-je utiliser le hash directement dans une balise <img> ?

Non, et c'est ce qui surprend le plus souvent. Un BlurHash n'est pas un format d'image — ce sont 20 à 30 caractères qu'un décodeur transforme en pixels. Votre application a besoin d'un décodeur pour l'afficher. Si vous voulez quelque chose qui fonctionne sans aucun décodeur, utilisez plutôt les boutons d'URI de données ou de téléchargement en PNG : les deux vous donnent un vrai PNG du placeholder flou, plus volumineux mais qui s'insère directement dans un attribut src ou dans un fichier sur disque.

Combien de composants dois-je utiliser ?

Quatre en largeur et trois en hauteur est le réglage par défaut habituel, et c'est celui avec lequel cet outil démarre. En dessous, on perd le sens de la position des éléments dans le cadre ; au-dessus, le hash grossit vite pour un gain visuel très faible, puisque le résultat sera de toute façon flouté. Neuf par neuf, c'est 166 caractères — six fois la longueur d'un 4×3 pour un placeholder que personne ne regarde de près.

Pourquoi un hash 1×1 paraît-il plus clair que mon image ?

Parce que la moyenne est calculée en lumière linéaire, pas sur les octets sRGB. Encoder un dégradé de test dont les canaux sRGB font en moyenne rgb(130, 110, 95) donne un hash 1×1 qui se décode en rgb(147, 116, 103). Ce n'est pas un bug — moyenner directement des valeurs encodées en gamma en est un, et c'est pourquoi les miniatures moyennées naïvement paraissent souvent troubles. La moyenne linéaire est celle qui est perceptuellement correcte.

Le curseur de contraste change-t-il le hash ?

Non. Le « punch » est appliqué au décodage, donc la chaîne reste identique quelle que soit la valeur choisie. Il est inclus ici parce que la plupart des bibliothèques de décodage exposent le même paramètre, et il est utile d'en voir l'effet avant d'en choisir une valeur dans votre propre code.

Un BlurHash conserve-t-il la transparence ?

Non. Le format n'a pas de canal alpha, donc un PNG transparent est encodé comme s'il avait été aplati sur ce que contenait le canevas. Pour les images avec une vraie transparence, une couleur de remplacement est généralement un meilleur choix qu'un flou.

Mon image est-elle envoyée sur un serveur ?

Non. Elle est décodée, sous-échantillonnée et transformée dans la page. L'encodeur comme le décodeur ici ne sont que de l'arithmétique s'exécutant dans votre navigateur, sans aucune requête envoyée à aucun moment.

Pourquoi afficher un placeholder flou plutôt qu'un indicateur de chargement ?

Un placeholder qui correspond aux couleurs et à la composition générale de l'image fait deux choses utiles. Il réserve le bon espace, si bien que rien ne se déplace quand l'image arrive — la principale cause des plaintes liées aux décalages de mise en page sur les pages riches en images. Et il donne immédiatement à l'œil quelque chose de plausible, ce qui rend le chargement plus court à ressentir qu'une attente équivalente devant un cadre gris, car il y a quelque chose à regarder plutôt que quelque chose à attendre.

Comment nous nous comparons

FonctionnalitéOnline Tool StoreEncodeurs en ligne de commandePlaceholders des CDN d'images
L'image ne quitte jamais votre appareil ✓ ✓ ✗
Rien à installer ✓ ✗ ✓
Décode un hash existant pour le vérifier ✓ Commande séparée ✗
Affiche l'erreur de couleur de l'aller-retour ✓ ✗ ✗
Exporte aussi une URI de données sans décodeur ✓ Avec des étapes supplémentaires ✓
Charge une image par glisser, parcourir ou coller ✓ Chemin de fichier seulementGlisser ou parcourir seulement
Encode toute une bibliothèque en une seule passe ✗ ✓ ✓
S'exécute automatiquement à l'envoi ✗ ✓ ✓

Utilisez cet outil pour comprendre le format, ajuster le nombre de composants et générer des hashes pour une poignée d'images. Une fois que vous encodez chaque envoi, cela relève de votre pipeline — une étape de build ou un gestionnaire d'upload — pas d'un onglet de navigateur. Cet outil est l'endroit où déterminer ce que vous voulez avant d'écrire ce code.

Découvrir des outils similaires

Intégrer cet outil

Collez ceci sur votre propre site : cela reste gratuit, et chaque fichier reste dans le navigateur de votre visiteur, ni chez vous ni chez nous.