颜色亮度/亮度可接受的范围

时间:2017-09-05 22:59:21

标签: ios swift colors rgb hsl

我正在用两种颜色创造一种新颜色;源颜色和目标颜色。新颜色由目标颜色的色调和饱和度分量组成,但使用源颜色的亮度(也称亮度或亮度)。

var hue: CGFloat = 0.0
var saturation: CGFloat = 0.0
var newBrightness: CGFloat = 0.0
var oldBrightness: CGFloat = 0.0
var alpha: CGFloat = 0.0

oldColor.getHue(
  &hue,
  saturation: &saturation,
  brightness: &oldBrightness,
  alpha: &alpha
)

newColor.getHue(
  &hue,
  saturation: &saturation,
  brightness: &newBrightness,
  alpha: &alpha
)

let color = UIColor(
  hue: hue,
  saturation: saturation,
  brightness: oldBrightness,
  alpha: alpha
)

我使用新颜色作为扫描线泛光填充实现的一部分,其中给定图像中的每个像素提供源颜色,并且用户选择目标颜色。

Correct color

当用户选择深色(即黑色)时,该实现的问题就会显现出来。将源颜色的亮度与目标颜色一起使用可能会产生完全不同的颜色。

Incorrect color

我怀疑新颜色的亮度超出了该颜色可接受的值范围。如果仅使用目标颜色的亮度,图像的绘制区域将完全平坦。如何保持相对于原始像素的亮度,使图像整体保持深度?

0 个答案:

没有答案