コンテンツへスキップ

BlurHash & LQIP プレースホルダー生成ツール

ローカル画像を選び、BlurHash 文字列と小さな JPEG データ URL に符号化します。成分数と LQIP 幅を決め、2 つのプレビューを比べてからコピーまたはダウンロードできます。

ブラウザ内でローカルに実行
· BlurHash · LQIP · データ URL
01JPEG · PNG · WebP
02
BlurHash
LQIP プレビュー
LQIP
03

画像から BlurHash 文字列と LQIP の JPEG を作る手順

このワークベンチは、ローカルの画像をブラウザー自身のデコーダーで読み込み、長辺 160 px 以内のキャンバスに描いてから、その画素を 2 通りに符号化します。BlurHash 文字列と、小さな JPEG のデータ URL です。どちらも同じ画像のプレースホルダーで、タブの外へは出ません。

左のプレビューは元画像の形でハッシュを復号したもの、右は生成したばかりの JPEG です。つまり 2 つの枠は、実際の画像が読み込まれる間に訪問者が見る姿をそのまま示します。下の行には元画像の寸法、文字列の長さ、JPEG の重さが出ます。

  1. ローカル画像を選択します。ブラウザーが復号できる形式なら何でもよく、JPEG・PNG・WebP に対応します。アニメーションは 1 フレーム目を読み、検証に使った 120 × 60 の GIF では 1 フレーム目の赤からプレースホルダーが作られました。準備できるとステータス行にファイル名が出ます。
  2. BlurHash の 2 つの成分を設定します。X は列、Y は行で、それぞれ 1〜9、既定は 4 × 3 です。成分を増やすほど細部が残り、文字列も長くなります。範囲外の値は 9 か 1 に戻り、空欄は既定値に戻ります。
  3. LQIP の幅を設定します。8〜96 px、既定は 32 です。これは JPEG の画素幅で、表示サイズではありません。高さは元画像の比率に従い、許可された幅の範囲ではファイルは数キロバイトに収まります。
  4. プレースホルダーを生成を押します。復号したハッシュと JPEG が並び、データ行に数値が出ます。透明な画像はどちらの出力でも白に合成されます。
  5. 結果は BlurHash をコピー、LQIP URL をコピー、LQIP をダウンロードで取り出せます。ファイル名は voritools-lqip.jpg です。クリアでファイル選択と 2 つの出力を空にし、各欄を 4 × 3 と 32 に戻します。

文字列・JPEG・2 つのプレビューの中身

BlurHash 文字列の中身

BlurHash は、画像をぼかした状態を短いテキストに符号化したものです。先頭の数文字が成分のグリッドと量子化した最大値を持ち、その後に平均色とセルごとの係数が続きます。既定の 4 × 3 では文字列は 28 文字でした。1 × 1 の 1 成分だけなら 6 文字で単色になり、最大の 9 × 9 では 166 文字になり構造が最もよく残ります。

この文字列は、自分のページ側の BlurHash デコーダーで使うためのものです。JavaScript・PHP・Swift・Kotlin のリファレンス実装、React コンポーネント、ハッシュを受け取る画像 CDN などが該当します。幅・高さ・メタデータは含まれず、デコーダーが指定した大きさで描画します。このページは符号化を行い、プレビュー用に自分のハッシュを復号もしますが、ハッシュを入力として受け取る機能はありません。

LQIP の JPEG とデータ URL

2 つ目の出力は本物の JPEG で、選んだ幅と固定の圧縮設定(品質 0.58)で書き出されます。検証に使った 800 × 500 の画像では、既定の 32 px で 987 バイト(データ行では 1 KB)、96 px でも 1.6 KB 未満でした。正確な数値は画像ごとにデータ行へ表示されます。

データ URL なので、img の src、CSS の background-image、picture 要素へそのまま貼れ、追加のリクエストは不要です。JPEG にアルファチャンネルはないため、透明な部分は白で塗られます(ハッシュと同じ合成です)。縦横比は元画像のままです。ダウンロードすると voritools-lqip.jpg として保存されます。

ローカル処理・精度・制限

画像の読み込み・描画・符号化はすべてページ内で行います。ファイルの中身はどこにも送信されず、アカウントもアップロード手順もありません。ページを開いた後はオフラインでも動きます。同じ画像・同じ成分数・同じ幅なら常に同じ文字列と同じ JPEG になるため、結果は再現できます。

符号化は BlurHash のリファレンス実装に沿っており、ここで生成したハッシュはリファレンス実装と比較して一致したため、他のデコーダーでも同じプレースホルダーが描画されます。実際の制限はブラウザー側だけです。非常に大きな写真でも符号化は 160 px で標本化するため問題ありませんが、タブが先にファイルを復号する必要があり、ブラウザーが読めない形式はあらかじめ変換が必要です。

最近使ったツール: