Colors 给定RGB值,如何创建色调(或阴影)?
给定RGB值,如Colors 给定RGB值,如何创建色调(或阴影)?,colors,rgb,Colors,Rgb,给定RGB值,如168、0、255,如何创建颜色的着色(使其更亮)和着色(使其更暗)?用于着色和着色: 对于阴影,将每个组件乘以其颜色的1/4、1/2、3/4等 以前的值。因子越小,阴影越深 对于色调,计算(255-以前的值),乘以1/4, 1/2、3/4等(因子越大,色调越浅),并将其添加到上一个值中(假设每个.component为8位整数) 请注意,颜色操作(如色调和其他着色)应在线性RGB中完成。然而,在文档中指定或在图像和视频中编码的RGB颜色不可能是线性RGB,在这种情况下,需要对
168、0、255
,如何创建颜色的着色(使其更亮)和着色(使其更暗)?用于着色和着色:
- 对于阴影,将每个组件乘以其颜色的1/4、1/2、3/4等 以前的值。因子越小,阴影越深
- 对于色调,计算(255-以前的值),乘以1/4, 1/2、3/4等(因子越大,色调越浅),并将其添加到上一个值中(假设每个.component为8位整数)
另请参见Violet Giraffe关于“gamma校正”的评论。我目前正在试验画布和像素。。。我发现这个逻辑对我更合适
var grey = (r + g + b) / 3;
var grey2 = (new_r + new_g + new_b) / 3;
var dr = grey - grey2 * 1;
var dg = grey - grey2 * 1
var db = grey - grey2 * 1;
tint_r = new_r + dr;
tint_g = new_g + dg;
tint_b = new_b _ db;
- 阴影通过“变暗”色调或“添加黑色”产生
- 色调是通过“点亮”色调或“添加白色”产生的
:RGB
- 遮荫:
newR = currentR * (1 - shade_factor) newG = currentG * (1 - shade_factor) newB = currentB * (1 - shade_factor)
- 着色:
newR = currentR + (255 - currentR) * tint_factor newG = currentG + (255 - currentG) * tint_factor newB = currentB + (255 - currentB) * tint_factor
- 更一般地说,导致将颜色
与颜色RGB(currentR,currentG,currentB)
分层的颜色是:RGBA(aR,aG,aB,alpha)
newR = currentR + (aR - currentR) * alpha newG = currentG + (aG - currentG) * alpha newB = currentB + (aB - currentB) * alpha
用于着色,而(aR,aG,aB)=黑色=(0,0,0)
用于着色(aR,aG,aB)=白色=(255255)
- 遮荫:
或HSV
:HSB
- 着色:降低
/值
或增加亮度
饱和度
- 着色:降低
或增加饱和度
/值
亮度
- 着色:降低
:HSL
- 遮光:降低
亮度
- 着色:增加
亮度
- 遮光:降低
RGB
中,并且想使用HSV
模型进行着色,例如,您可以只转换为HSV
,进行着色并转换回RGB
。要转换的公式并不简单,但可以在互联网上找到。根据您的语言,它也可能作为核心功能提供:
的优点是实现起来非常简单,但是:RGB
- 您只能相对地对颜色进行着色或着色
- 您不知道您的颜色是否已经着色或着色
或HSV
有点复杂,因为需要使用两个参数才能得到想要的(HSB
&Saturation
/值
)亮度
在我看来是最好的:HSL
- 由CSS3支持(用于webapp)
- 简单准确:
表示色调不变50%
表示色调较浅(色调)>50%
我试过了,效果很好。我认为写公式的例子会有帮助。原件(r、g、b);阴影(rs,gs,bs):
,rs=r*0.25
,gs=g*0.25
(这是一个相当暗的阴影);色调(rt,gt,bt):bs=b*0.25
,rt=r+(0.25*(255-r))
,gt=g+(0.25*(255-g))
(这是一种非常浅的色调)。我把它作为一个很酷的阵列的一部分,创造了很多色彩,效果非常好。希望有帮助。谢谢你,彼得。你弄错了。是维切维萨。你确定这些操作不能解释伽马校正吗?@VioletGiraffe:你的伽马校正很有道理。请参阅我的编辑。(这取代了我22小时前删除的一条评论。)我相信这里的“色调是通过“加深”色调而产生的,色调,你指的是颜色。因为如果你说的是HSL/HSV中的色调,改变它会产生不同的颜色,而不是阴影/色调。色调(0-360°)本身不能变得更暗/更亮。要提供颜色阴影/色调,必须修改SL/SV值。此定义可能会误导某些人,使他们认为更改色调会产生较深/较浅的颜色。阴影版本仅适用于从0开始的颜色范围。将颜色范围的一半添加到颜色通道值,然后进行计算,然后再次减去该范围。如果您的颜色是有符号的,并且您可以在不因溢出而破坏某些内容的情况下进行计算,那么这将按预期工作。bt=b+(0.25*(255-b))