当前位置:首页 > JavaScript

js实现hsv

2026-03-14 02:39:52JavaScript

HSV 颜色模型简介

HSV(Hue, Saturation, Value)是一种颜色空间模型,通过色相(H)、饱和度(S)、明度(V)描述颜色。与RGB相比,HSV更接近人类对颜色的直观感知。

js实现hsv

RGB 转 HSV 的 JavaScript 实现

以下代码将RGB值(范围0-255)转换为HSV值(H范围0-360,S和V范围0-1):

js实现hsv

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: h, s: s, v: v };
}

HSV 转 RGB 的 JavaScript 实现

以下代码将HSV值转换回RGB值(范围0-255):

function hsvToRgb(h, s, v) {
    let r, g, b;
    const i = Math.floor(h / 60);
    const f = h / 60 - i;
    const p = v * (1 - s);
    const q = v * (1 - f * s);
    const t = v * (1 - (1 - f) * s);

    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }

    return {
        r: Math.round(r * 255),
        g: Math.round(g * 255),
        b: Math.round(b * 255)
    };
}

使用示例

// RGB转HSV示例
const hsv = rgbToHsv(255, 100, 50);
console.log(hsv); // 输出类似 { h: 15, s: 0.8, v: 1 }

// HSV转RGB示例
const rgb = hsvToRgb(15, 0.8, 1);
console.log(rgb); // 输出类似 { r: 255, g: 100, b: 50 }

注意事项

  • HSV的H(色相)范围是0-360度,S(饱和度)和V(明度)范围是0-1。
  • RGB值输入范围应为0-255,输出也是0-255。
  • 转换时注意边界条件,如饱和度为0时色相无意义。

标签: jshsv
分享给朋友:

相关文章

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取所有…