BlurHash-Generator
Kodieren Sie Bilder in BlurHash-Strings. Passen Sie Komponenten an, dekodieren Sie Hashes und überprüfen Sie Farbfehler. Läuft vollständig im Browser.
Dieses Tool läuft vollständig in Ihrem Browser. Ihre Dateien werden niemals an einen Server hochgeladen.
Quelle
Dekodierter Platzhalter
Nur beim Dekodieren; wird nicht im Hash gespeichert.
Ein BlurHash ist eine Zeichenkette, die Sie neben einem Bild speichern und beim Rendern zu einem unscharfen Platzhalter erweitern — damit das Layout etwas Sinnvolles zeigen kann, bevor das echte Bild eintrifft, ohne eine zweite Netzwerkanfrage. Ihr Client braucht einen Decoder, um ihn anzuzeigen; die Data-URI-Schaltfläche liefert Ihnen stattdessen ein fertiges Bild, das keinen Decoder braucht, aber größer ist. Es wird nichts hochgeladen.
So wird es verwendet
- Ziehen Sie ein Bild hinein, wählen Sie eine Datei aus oder fügen Sie eines mit Strg+V ein — ein Beispiel ist bereits kodiert, damit Sie die Form der Ausgabe sehen können.
- Belassen Sie die Detailstufe bei 4 × 3, sofern Sie keinen Grund haben, sie zu ändern.
- Kopieren Sie den Hash und speichern Sie ihn in derselben Zeile oder demselben Datensatz wie das Bild selbst.
- Dekodieren Sie ihn in Ihrem Client, oder verwenden Sie die Data-URI- oder Download-Schaltflächen, wenn Sie keinen Decoder hinzufügen möchten.
Was Sie tatsächlich erhalten
Die Länge ist durch die Komponentenanzahl festgelegt: vier Zeichen für den Header plus zwei pro Komponente. Das macht die Größe vollständig vorhersehbar, bevor Sie überhaupt etwas kodieren:
1 × 1 6 Zeichen einheitliche Durchschnittsfarbe 3 × 3 22 Zeichen grobe helle und dunkle Bereiche 4 × 3 28 Zeichen der übliche Standard 9 × 9 166 Zeichen abnehmender Nutzen
28 Byte sind klein genug, um kostenlos in die JSON-Antwort aufgenommen zu werden, die Ihre Bilder auflistet — kleiner als die meisten einzelnen HTTP-Header. Das ist der ganze Sinn des Formats: Der Platzhalter kommt mit den Metadaten in der Anfrage an, die Sie ohnehin schon stellen, sodass keine zweite Rundreise nötig ist, bevor die Seite etwas zeigen kann. Die Transformation läuft außerdem in linearem Licht statt auf rohen sRGB-Bytes: Das direkte Mitteln gammakodierter Werte erzeugt genau die matschige, zu dunkle Unschärfe, die man manchmal sieht. Der Effekt ist bei einer Komponente am deutlichsten zu sehen, wo der Hash nichts als ein Durchschnitt ist — ein Testverlauf mit sRGB-Byte-Durchschnitt rgb(130, 110, 95) dekodiert bei 1 × 1 zu rgb(147, 116, 103), und das lineare Ergebnis ist das physikalisch korrekte, das dem entspricht, was man messen würde, wenn man mit einer Kamera auf das Bild unscharf stellt. Bei höheren Komponentenzahlen schließt sich die Lücke im Gesamtdurchschnitt auf etwa ein oder zwei Stufen von 255.
Häufig gestellte Fragen
Kann ich den Hash direkt in einem <img>-Tag verwenden?
Nein, und das überrascht die meisten Menschen am häufigsten. Ein BlurHash ist kein Bildformat — es sind 20 bis 30 Zeichen, die ein Decoder zu Pixeln erweitert. Ihre App braucht einen Decoder, um ihn anzuzeigen. Wenn Sie etwas wollen, das ganz ohne Decoder funktioniert, verwenden Sie stattdessen die Data-URI- oder Download-als-PNG-Schaltflächen: Beide liefern Ihnen ein echtes PNG des unscharfen Platzhalters, das größer ist, aber direkt in ein src-Attribut oder eine Datei auf der Festplatte passt.
Wie viele Komponenten sollte ich verwenden?
Vier in der Breite und drei in der Höhe ist die übliche Standardeinstellung und das, womit dieses Tool startet. Darunter verliert man das Gefühl dafür, wo sich Dinge im Bild befinden; darüber wächst der Hash schnell für sehr wenig sichtbaren Gewinn, weil das Ergebnis ohnehin unscharf sein wird. Neun mal neun sind 166 Zeichen — sechsmal so lang wie ein 4×3 für einen Platzhalter, den sich niemand genau ansieht.
Warum wirkt ein 1×1-Hash heller als mein Bild?
Weil der Durchschnitt in linearem Licht berechnet wird, nicht anhand der sRGB-Bytes. Kodiert man einen Testverlauf, dessen sRGB-Kanäle im Durchschnitt rgb(130, 110, 95) ergeben, erhält man einen 1×1-Hash, der zu rgb(147, 116, 103) dekodiert. Das ist kein Fehler — das direkte Mitteln gammakodierter Werte ist der Fehler, und deshalb wirken naiv gemittelte Miniaturansichten oft trüb. Der lineare Durchschnitt ist der wahrnehmungsmäßig korrekte.
Ändert der Kontrastregler den Hash?
Nein. Der Punch-Wert wird erst beim Dekodieren angewendet, sodass die Zeichenkette unabhängig von Ihrer Einstellung identisch bleibt. Er ist hier enthalten, weil die meisten Decoder-Bibliotheken denselben Parameter anbieten und es nützlich ist, seinen Effekt zu sehen, bevor Sie einen Wert in Ihrem eigenen Code festlegen.
Bleibt bei einem BlurHash die Transparenz erhalten?
Nein. Das Format hat keinen Alphakanal, sodass ein transparentes PNG so kodiert wird, als wäre es auf das, was die Leinwand enthielt, geflacht worden. Für Bilder mit echter Transparenz ist eine Platzhalterfarbe meist die bessere Wahl als eine Unschärfe.
Wird mein Bild hochgeladen?
Nein. Es wird auf der Seite dekodiert, verkleinert und transformiert. Sowohl der Encoder als auch der Decoder hier sind reine Arithmetik, die in Ihrem Browser läuft — es wird zu keinem Zeitpunkt eine Anfrage gesendet.
Warum ein unscharfer Platzhalter statt eines Ladekreises?
Ein Platzhalter, der zu den Farben und der groben Komposition des Bildes passt, erfüllt zwei nützliche Zwecke. Er reserviert den richtigen Platz, sodass sich beim Laden des Bildes nichts verschiebt — die Hauptursache für Beschwerden über Layout-Verschiebungen auf bildlastigen Seiten. Und er gibt dem Auge sofort etwas Plausibles, wodurch das Laden kürzer wirkt als eine gleich lange Wartezeit gegen eine graue Fläche, weil es etwas zum Anschauen statt nur zum Warten gibt.
So schneiden wir im Vergleich ab
| Funktion | Online Tool Store | Kommandozeilen-Encoder | Bild-CDN-Platzhalter |
|---|---|---|---|
| Bild verlässt nie Ihr Gerät | ✓ | ✓ | ✗ |
| Nichts zu installieren | ✓ | ✗ | ✓ |
| Dekodiert einen vorhandenen Hash zur Prüfung | ✓ | Separater Befehl | ✗ |
| Zeigt den Rundtrip-Farbfehler | ✓ | ✗ | ✗ |
| Exportiert auch eine decoderfreie Data-URI | ✓ | Mit zusätzlichen Schritten | ✓ |
| Lädt ein Bild per Ziehen, Durchsuchen oder Zwischenablage | ✓ | Nur Dateipfad | Nur Ziehen oder Durchsuchen |
| Kodiert eine ganze Bibliothek in einem Durchgang | ✗ | ✓ | ✓ |
| Läuft automatisch beim Hochladen | ✗ | ✓ | ✓ |
Nutzen Sie dieses Tool, um das Format zu verstehen, Komponentenzahlen abzustimmen und Hashes für eine Handvoll Bilder zu erzeugen. Sobald Sie jeden Upload kodieren, gehört das in Ihre Pipeline — einen Build-Schritt oder einen Upload-Handler — nicht in einen Browser-Tab. Dieses Tool ist der Ort, um herauszufinden, was Sie wollen, bevor Sie diesen Code schreiben.