例如,我有一个具有这些值的像素:
CGFloat red = 34 // 0 - 255
CGFloat green = 128
CGFloat blue = 190
我想增加亮度,使蓝色为 255。注意:“亮度”是指 LAB 颜色空间中 Photoshop 的 L 分量。看图片!
必须有一个特殊的公式来计算增加亮度的 RGB 值,因为 RGB 值是以非线性方式修改的!
证明:我在 Photoshop 中做了一个测试并创建了相同的颜色,然后打开颜色选择器进行检查:
然后我激活了控制亮度的 LAB 颜色空间的 L 分量(至少这就是我所说的 - 我的意思是由 L 分量控制的亮度。猜猜那是亮度)。
因此,激活 L 后,我向上拖动左侧的滑块,直到 B 达到 255:
现在读取生成的 RGB 值:
CGFloat newRed = 112 // 0 - 255
CGFloat newGreen = 188
CGFloat newBlue = 255
它们之间的区别是:
newRed - red = +78
newGreen - green = +60
newBlue - blue = +65
百分比是:
red shift: +38.42%
green shift: +29.55%
blue shift: +32.01%
这与用于计算 RGB 亮度的已知公式不对应,该公式接近luminance = (red * 0.3) + (green * 0.6) + (blue * 0.1)
.
显然,它们已经以非线性方式移动。
有没有一种已知的方法可以用 Photoshop 的类似方式从红色、绿色、蓝色中计算出 newRed、newGreen、newBlue?