以下の内容はhttps://blog.km3.dev/entry/20260108/1767875454より取得しました。


node-vibrant でいい感じの色を抽出してテーマカラーを自動決定する

こんにちは、id:rokuokun です。

この記事ははてなエンジニア Advent Calendar 2025 - Hatena Developer Blog の1月8日の記事です。 つまり39日目です。

昨日は id:magaming さんで 不動産紹介サイトの情報から住所を特定するWebアプリを作ってた - magamingのブログ という記事でした。

今回は node-vibrant というライブラリで画像から主要な色を取り出して遊んでみます。

node-vibrant

node-vibrant は指定された画像から主要な色をカラーパレットとして取り出すことができるライブラリです。

GitHub はこちら。

github.com

ドキュメントはこちら。

vibrant.dev

色を抽出する

ドキュメントをなぞるだけでできます。 https://vibrant.dev/guides/get-started/

画像から色を抽出するには以下のようにします。 本当にこれだけです。簡単です。

import { Vibrant } from "node-vibrant/browser";

const vibrant = new Vibrant("path/to/image");
const palette = await vibrant.getPalette();

console.log(palette.Vibrant?.hex);

動作例を作ってきました。

hatena-advent-2025.km3.workers.dev

node-vibrant で自分のアイコンから代表的な色を抽出した

github.com

この例では、ブラウザ側で処理していますが、その他 Node.js と Web Worker 上で動作します。 その場合は import するものが異なります。

// Node.js usage
import { Vibrant } from "node-vibrant/node";
// Browser usage
import { Vibrant } from "node-vibrant/browser";

あとの詳しいことはドキュメントを見てください。

https://vibrant.dev/guides/get-started/

思ったより簡単だった

思ったより簡単でした。これだけでは記事にならないので困りました。

そういえば、最近のウェッブサイトはライトテーマとダークテーマを提供するのは定番ですがそれ以外の色がないのは少し寂しいです。 都合がいいので、好きな画像でカラーテーマを変えられるページを作ってみます。

作ったもの

画像を指定してテーマが自動決定されるブログ

hatena-advent-2025.km3.workers.dev

github.com

全部 AI にお任せして作ってもらいました。記事の内容もAIが書いているので本当かは知りません。 画像を選択すると、その画像から色を抽出してテーマが自動決定されます。

URLからもできるようなってますが、CORS の都合などがあるのでアップロードする方が確実だと思います。

電気通信大学キャンパスマップを撮った写真からテーマを決定する

画像によっては見にくいこともありますが、まぁそこそこ読めるなという感じでした。

おわりに

オチはありません。

この記事ははてなエンジニア Advent Calendar 2025 - Hatena Developer Blog の1月8日の記事です。

明日(1月9日)は id:rmatsuoka さんです。よろしくお願いします。




以上の内容はhttps://blog.km3.dev/entry/20260108/1767875454より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14