相关疑难解决方法(0)

RGB到十六进制,十六进制到RGB

如何将RGB格式的颜色转换为Hex格式,反之亦然?

例如,转换'#0080C0'(0, 128, 192).

javascript rgb hex colors

498
推荐指数
18
解决办法
42万
查看次数

RGB值的加色混合算法

我正在寻找一种算法来为RGB值进行加色混合.

是否将RGB值一起添加到最大值256这么简单?

(r1, g1, b1) + (r2, g2, b2) =
    (min(r1+r2, 256), min(g1+g2, 256), min(b1+b2, 256))  
Run Code Online (Sandbox Code Playgroud)

algorithm colors

63
推荐指数
7
解决办法
7万
查看次数

有没有一种颜色混合的算法,就像混合真实颜色一样?

RGB颜色的常见混合与绘画的混合颜色非常不同,它是混合光而不是混合颜料.

例如:

Blue (0,0,255) + Yellow (255,255,0) = Grey (128,128,128)
Run Code Online (Sandbox Code Playgroud)

(它应该是蓝色+黄色=绿色)

是否有任何已知的混色算法,就像混合真实颜色一样?


我的方法

我已经尝试过以下内容:

将两种颜色转换为HSV并混合色调(乘以从饱和度计算的系数),以及饱和度和值通道的简单平均值.然后我从两种颜色计算平均亮度,并调整结果颜色以匹配此亮度.这很有效,但色调混合有时是错误的,例如:

Red (Hue 0°) + Blue (Hue 240°) = Green (Hue 120°)
Run Code Online (Sandbox Code Playgroud)

我发现有时我需要将色调值移动360°(当色调之间的差异大于180°时).

Red (Hue 360°) + Blue (Hue 240°) = Magenta/fuchsia (Hue 300°)
Run Code Online (Sandbox Code Playgroud)

但这种转变也不是很好,例如:

Cyan (Hue 179°) + Red (Hue 0°) = Hue 89.5°
Cyan (Hue 181°) + Red (Hue 0°) --> shifting is performed (the difference is greater than 180°)
Cyan (Hue 181°) + Red (Hue 360°) = Hue 270.5°
Run Code Online (Sandbox Code Playgroud)

(色调179 +红色)和(色调181 +红色)产生两种完全不同的颜色. …

language-agnostic algorithm blending colors color-space

59
推荐指数
3
解决办法
2万
查看次数