article header
技術記事2026年1月8日

画像から抽出した色で動的にブログデザインを変える技術

node-vibrantライブラリを使って、画像から主要な色を抽出し、 それをWebサイトのデザインに反映させる実装方法を詳しく解説します。

🎨 ヘッダー画像を変更してテーマを試す

はじめに

Webサイトのデザインにおいて、色彩は非常に重要な要素です。 この記事では、画像から自動的に色を抽出し、それをサイトのテーマカラーとして適用する方法を紹介します。

node-vibrantとは

node-vibrantは、画像から支配的な色を抽出するJavaScriptライブラリです。 Googleが開発したAndroid向けのPaletteライブラリをJavaScriptに移植したもので、 画像の中から以下のような色のパレットを生成します。

  • Vibrant: 鮮やかな色
  • Muted: 落ち着いた色
  • DarkVibrant: 暗めの鮮やかな色
  • DarkMuted: 暗めの落ち着いた色
  • LightVibrant: 明るめの鮮やかな色
  • LightMuted: 明るめの落ち着いた色

💡 このページの色
現在のヘッダー画像から抽出された色がこのページ全体のデザインに適用されています。 異なる画像を試すことで、全く違った雰囲気のデザインに変化します。

実装のポイント

1. CORS対応

外部の画像を使用する場合、CORS(Cross-Origin Resource Sharing)への対応が必要です。 node-vibrantでは、Image要素を作成してimg.crossOrigin = "anonymous"を設定し、読み込み完了後にそのImage要素をVibrantのコンストラクタに渡します。 これによりCanvasでの画像処理が可能になります。

2. 色の適用戦略

抽出された色をどのように使うかは重要なポイントです。 このページでは以下のような戦略で色を適用しています:

  • 見出しやリンクには Vibrant カラー
  • 背景には LightMuted カラー
  • 強調要素には LightVibrant カラー
  • 本文テキストには DarkVibrant カラー

まとめ

画像から色を抽出してデザインに反映させる技術は、 ブログ記事やポートフォリオサイトなど、画像が重要な役割を果たすWebサイトで特に効果的です。 ユーザーごとに異なる画像をアップロードするサービスでは、 それぞれの画像に合わせた独自のデザインを自動生成することができます。

ぜひ、さまざまな画像で試してみて、色の組み合わせによってどのように雰囲気が変わるか体験してみてください。

この記事が役に立ったら、ぜひシェアしてください!