画像から色を取得(RGB・HSV) / ツール

画像の選択した箇所から色をRGBとHSVで取得します。

  • 画像が1920×1080より大きい場合は縮小表示します。
  • 色空間の変換はこちら
or 画像ファイルをドロップ
or 画像を貼り付け (Ctrl + v)
#FFFFFF
rgb(255,255,255)
hsv(0°, 0%, 100%)

クリックした色を記録します。

RGB(カラーコード)

光の三原色と呼ばれる赤(Red)、緑(Green)、青(Blue)を混ぜて色を表現します。ディスプレイなどで使われており、機械にわかりやすい表現です。RGB値を16進数で表記した文字列をカラーコードやウェブカラーと呼ぶこともあります。

HSV

色相(Hue / 色の種類)、彩度(Saturation / 鮮やかさ)、明度(Value / 明るさ)の三つの成分で色を表現します。人間にわかりやすい表現です。


ペイントでもRGBなどを取得できるが手順が少々面倒。

  1. ペイントで画像を開く
  2. 「色の選択」を選ぶ
  3. スポイトしたい箇所をクリック
  4. 「色の編集」を開く
  5. 10進数のRGB値、HSV値が出る
  6. 16進数のカラーコードが欲しければ別途変換

と、だるいのでツールにしてみました。クリップボードからcanvasに貼り付けるのが地味に苦労して、けっきょくIEだけ諦めました。IEもうお前は知らん。

このサイトはGatsby.js (React) なので、こんな感じで実装してみました。もっといい方法があったら教えて頂けると嬉しいです。

componentDidMount() {
  document.addEventListener("paste", this.onPaste, false);
}

onPaste(e) {
  var data = e.clipboardData;
  if (!data
    || !data.types
    || data.types.length !== 1
    || data.types[0] !== 'Files') {
      return true;
  }

  var file = data.items[0].getAsFile();
  var img = new Image();
  img.onload = function() {
    var cvs = document.getElementById('my_canvas');
    var ctx = cvs.getContext('2d');
    // キャンバスクリア
    ctx.clearRect(0, 0, cvs.width, cvs.height);

    if (cvs.width < img.width || cvs.height < img.height) {
      // canvasサイズを超えている場合、アスペクト比を維持して縮小
      var scale = Math.min(cvs.width / img.width, cvs.height / img.height);
      ctx.drawImage(img, 0, 0, img.width * scale, img.height * scale);
    } else {
      ctx.drawImage(img, 0, 0);
    }
  };
  img.src = window.URL.createObjectURL(file);
}
矢野ヒロタ / 1987年生まれ。プログラマー。
趣味で作ったWebツールを公開しています。無料ですのでご自由にお使いください。ブログは技術ネタと見せかけてもっぱら妄想です。よしなに。
© HIROTA YANO