当前位置:首页 > JavaScript

js实现hsv

2026-04-05 20:47:16JavaScript

HSV颜色模型简介

HSV(Hue-Saturation-Value)是一种基于颜色直观特性的颜色空间模型,常用于颜色选择和图像处理。H代表色相(0-360°),S代表饱和度(0-100%),V代表明度(0-100%)。

RGB转HSV算法

以下JavaScript函数可将RGB值(范围0-255)转换为HSV值(范围H:0-360, S/V:0-100):

function rgbToHsv(r, g, b) {
  r /= 255, g /= 255, b /= 255;
  const max = Math.max(r, g, b), min = Math.min(r, g, b);
  let h, s, v = max;
  const d = max - min;
  s = max === 0 ? 0 : d / max;

  if (max === min) {
    h = 0;
  } else {
    switch (max) {
      case r: h = (g - b) / d + (g < b ? 6 : 0); break;
      case g: h = (b - r) / d + 2; break;
      case b: h = (r - g) / d + 4; break;
    }
    h *= 60;
  }
  return [h, s * 100, v * 100];
}

HSV转RGB算法

将HSV值转换回RGB的JavaScript实现:

function hsvToRgb(h, s, v) {
  s /= 100, v /= 100;
  const c = v * s;
  const x = c * (1 - Math.abs((h / 60) % 2 - 1));
  const m = v - c;
  let r, g, b;

  if (h >= 0 && h < 60) [r, g, b] = [c, x, 0];
  else if (h < 120) [r, g, b] = [x, c, 0];
  else if (h < 180) [r, g, b] = [0, c, x];
  else if (h < 240) [r, g, b] = [0, x, c];
  else if (h < 300) [r, g, b] = [x, 0, c];
  else [r, g, b] = [c, 0, x];

  return [
    Math.round((r + m) * 255),
    Math.round((g + m) * 255),
    Math.round((b + m) * 255)
  ];
}

颜色选择器实现示例

基于HSV模型的简易颜色选择器实现:

// 创建HSV色轮
function createColorWheel(canvas, size) {
  const ctx = canvas.getContext('2d');
  canvas.width = canvas.height = size;
  const center = size / 2;
  const radius = center - 10;

  for (let angle = 0; angle < 360; angle++) {
    for (let r = 0; r < radius; r++) {
      const x = center + r * Math.cos(angle * Math.PI / 180);
      const y = center + r * Math.sin(angle * Math.PI / 180);
      const sat = r / radius * 100;
      const [red, green, blue] = hsvToRgb(angle, sat, 100);
      ctx.fillStyle = `rgb(${red},${green},${blue})`;
      ctx.fillRect(x, y, 1, 1);
    }
  }
}

应用场景

HSV模型特别适合需要直观颜色调整的场景:

js实现hsv

  • 图形编辑软件中的颜色拾取器
  • 数据可视化的主题颜色生成
  • 用户界面设计中的动态配色方案

以上实现可直接用于网页开发中的颜色处理需求,通过调整HSV参数可精确控制颜色表现。

标签: jshsv
分享给朋友:

相关文章

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…

js 实现全屏

js 实现全屏

使用 requestFullscreen 方法 通过调用元素的 requestFullscreen 方法可以实现全屏。该方法兼容现代浏览器,但不同浏览器可能需要前缀。 const element =…