HSL to RGB

2024-01-05 19:58
文章标签 rgb hsl

本文主要是介绍HSL to RGB,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载:http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c



Reposted from mjijackson.com -- this is so cool that we should make sure there are more copies of this on the net, just in case. =D

Here is a set of additive color model conversion algorithms that I found published on Wikipedia and have implemented in JavaScript. It was surprisingly difficult to find these actually implemented anywhere in compact, efficient, and bug-free code, so I wrote my own. These should be easily portable to other programming languages if desired.

/*** Converts an RGB color value to HSL. Conversion formula* adapted from http://en.wikipedia.org/wiki/HSL_color_space.* Assumes r, g, and b are contained in the set [0, 255] and* returns h, s, and l in the set [0, 1].** @param   Number  r       The red color value* @param   Number  g       The green color value* @param   Number  b       The blue color value* @return  Array           The HSL representation*/
function rgbToHsl(r, g, b){r /= 255, g /= 255, b /= 255;var max = Math.max(r, g, b), min = Math.min(r, g, b);var h, s, l = (max + min) / 2;if(max == min){h = s = 0; // achromatic}else{var d = max - min;s = l > 0.5 ? d / (2 - max - min) : d / (max + min);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 /= 6;}return [h, s, l];
}/*** Converts an HSL color value to RGB. Conversion formula* adapted from http://en.wikipedia.org/wiki/HSL_color_space.* Assumes h, s, and l are contained in the set [0, 1] and* returns r, g, and b in the set [0, 255].** @param   Number  h       The hue* @param   Number  s       The saturation* @param   Number  l       The lightness* @return  Array           The RGB representation*/
function hslToRgb(h, s, l){var r, g, b;if(s == 0){r = g = b = l; // achromatic}else{function hue2rgb(p, q, t){if(t < 0) t += 1;if(t > 1) t -= 1;if(t < 1/6) return p + (q - p) * 6 * t;if(t < 1/2) return q;if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;return p;}var q = l < 0.5 ? l * (1 + s) : l + s - l * s;var p = 2 * l - q;r = hue2rgb(p, q, h + 1/3);g = hue2rgb(p, q, h);b = hue2rgb(p, q, h - 1/3);}return [r * 255, g * 255, b * 255];
}/*** Converts an RGB color value to HSV. Conversion formula* adapted from http://en.wikipedia.org/wiki/HSV_color_space.* Assumes r, g, and b are contained in the set [0, 255] and* returns h, s, and v in the set [0, 1].** @param   Number  r       The red color value* @param   Number  g       The green color value* @param   Number  b       The blue color value* @return  Array           The HSV representation*/
function rgbToHsv(r, g, b){r = r/255, g = g/255, b = b/255;var max = Math.max(r, g, b), min = Math.min(r, g, b);var h, s, v = max;var d = max - min;s = max == 0 ? 0 : d / max;if(max == min){h = 0; // achromatic}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 /= 6;}return [h, s, v];
}/*** Converts an HSV color value to RGB. Conversion formula* adapted from http://en.wikipedia.org/wiki/HSV_color_space.* Assumes h, s, and v are contained in the set [0, 1] and* returns r, g, and b in the set [0, 255].** @param   Number  h       The hue* @param   Number  s       The saturation* @param   Number  v       The value* @return  Array           The RGB representation*/
function hsvToRgb(h, s, v){var r, g, b;var i = Math.floor(h * 6);var f = h * 6 - i;var p = v * (1 - s);var q = v * (1 - f * s);var 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 * 255, g * 255, b * 255];
}

这篇关于HSL to RGB的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/573995

相关文章

Excel查询颜色RGB值

1.选中单元格,点右键,设置单元格格式-填充-其他颜色-自定义,下面显示的就是该单元格颜色的RGB值 2.与十六进制换算: https://www.sioe.cn/yingyong/yanse-rgb-16/

HSV颜色空间和RGB颜色空间相互转换C语言实现

HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。这个模型中颜色的参数分别是:色调(H),饱和度(S),明度(V)。 色调H 用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色

RGB色转为灰度色算法-img2ascii_char

一、基础   对于彩色转灰度,有一个很著名的心理学公式: Gray = R0.299 + G0.587 + B0.114 二、整数算法   而实际应用时,希望避免低速的浮点运算,所以需要整数算法。   注意到系数都是3位精度的没有,我们可以将它们缩放1000倍来实现整数运算算法: Gray = (R299 + G587 + B114 + 500) / 1000   RGB一般是8位精度,现在缩放1

java 图像RGB,图像红、绿、蓝、灰 化

把图形进行红、绿、蓝、灰 化,并保存     /** * 名词解释: * 饱和度是指色彩的鲜艳程度,也称色彩的纯度。 * 灰度:使用黑色调表示物体,即用黑色为基准色,不同的饱和度的黑色来显示图像。 * 像素:如同摄影的相片一样,数码影像也具有连续性的浓淡阶调,我们若把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小方点所组成, * 这些小方点就是构成影像的最小单元——像素。是分

#FFFFFF 和RGB的相互转化

#00b3e9 --->RGB(0,179,233)的转化 float R = (float)((0x00b3e9 & 0xFF0000)>>16); --> 0 float G = (float)((0x00b3e9 & 0xFF00)>>8); --> 179 float B = (float)((0x00b3e9 & 0xFF)); --> 233

使用FFmpeg的AVFilter转换YUV到RGB

AVFilter 是 FFmpeg 库 libavfilter 的核心组件,提供了一套强大的音视频处理框架,用于对音视频流进行复杂的过滤、转换和效果处理。通过 AVFilter,开发者可以构建自定义的滤镜图(filter graph),实现各种音视频处理任务,如颜色空间转换、缩放、裁剪、特效添加等。 以下是对 AVFilter 的详细介绍,包括其架构、关键概念、使用方法以及示例代码。 1. A

[C++] 将LONG类型的color值转换为RGB值

转换原理: The calculation is: (65536 * Blue) + (256 * Green) + (Red) 'Convert RGB to LONG: LONG = B * 65536 + G * 256 + R       'Convert LONG to RGB:  B = LONG \ 65536  G = (LONG - B * 65536) \ 256  R =

[米联客-XILINX-H3_CZ08_7100] FPGA程序设计基础实验连载-25 RGB转HDMI显示方案

软件版本:VIVADO2021.1 操作系统:WIN10 64bit 硬件平台:适用 XILINX A7/K7/Z7/ZU/KU 系列 FPGA 实验平台:米联客-MLK-H3-CZ08-7100开发板 板卡获取平台:https://milianke.tmall.com/ 登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑! 目录 1概述

9 自研rgbd相机基于rk3566之qt框架开发rgb图像处理线程

qt框架开发rgb图像处理线程 rgb线程功能及处理流程1 rgb线程分为如下几个功能:2 rgb线程的处理流程如下: rgb线程qt程序详解1 接收界面启动停止信号。2 qt线程运行 rgb线程程序示例1 线程头文件:pthread_33d_sc2310.h2 线程源文件:pthread_33d_sc2310.cpp rgb线程功能及处理流程 1 rgb线程分为如下几个功能: