c语言比例法颜色,颜色空间RGB与 色调、饱和度、亮度(ESL)转换的完整C语言算法...

此博客提供了一种将0-240范围的HSL颜色值缩放到HSL标准范围,并通过HSL到RGB的转换公式,详细解释了如何实现这一过程,包括一个实用的代码示例。适合色彩处理或编程者学习颜色空间转换技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

lfhzwb

推荐于 2017.09.22

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:54%    等级:12

已帮助:7054人

你把0-240 按比例 缩放 一下 到 HSL 的 范围,用 HSL-RGB 转换。

HSL--H是色相(0到360度),S是饱和度(0到1),L是亮度(0到1)

规1化的 HSL到RGB颜色值算换子程序:

// nomorized h,s,L 0-1.0

void HSL2RGB(double h, double s, double L,unsigned char *rr, unsigned char *gg,

unsigned char *bb)

{

double v,m,sv, vs0, c1, c2,xiaoshu,r,g,b;

int ih;

r = L; g = L;b = L;

if (L <= 0.5) v = L * (1.0 + s); else v = L + s - L * s;

if (v > 0) {

m = L + L - v; sv = (v - m ) / v;

h = h * 6.0; ih = (int)h;

xiaoshu = h - ih;

vs0 = v * sv * xiaoshu; c1 = m + vs0; c2 = v - vs0;

switch (ih) {

case 0: r = v; g = c1; b = m; break;

case 1: r = c2; g = v; b = m; break;

case 2: r = m; g = v; b = c1; break;

case 3: r = m; g = c2; b = v; break;

case 4: r = c1; g = m; b = v; break;

case 5: r = v; g = m; b = c2; break;

default: break;

}

}

*rr = (int) (r * 0xff); *gg = (int) (g * 0xff); *bb = (int) (b * 0xff);

}

把你3个数值,各除以240,代入子程序即可。

详见:http://hi.baidu.com/svjvcfwticdkmse/item/e6c43a21e385b10977272c0e

彩虹光谱RGB值自动生成程序 (L_o_o_n_i_e == 金色潜鸟)

00分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值