改变颜色亮度

时间:2012-12-30 06:48:37

标签: javascript colors rgb

  

可能重复:
  Increase CSS brightness color on click with jquery/javascript?

在JavaScript中,当我们知道红色,蓝色,绿色的值时,我怎么能改变颜色的亮度?就像在MSPaint中可以做到的那样?

1 个答案:

答案 0 :(得分:2)

这个问题与Javascript无关,我不知道你对MSPaint的影响是什么。此外,仅仅为了调整亮度而在色彩空间之间进行转换可能过于昂贵。有一种更简单的方法可能对您来说足够好,这是一种快速且易于执行的伽马校正。如果红色,绿色和蓝色的值在[0,255]范围内,您还可以轻松创建一个查找表(lut),该表将用于快速应用给定值的伽马校正。范围[0,255]。这种方法的伪代码是:

GAMMA = k

lut = []
for i = 0 to 255
    v = i/255.0
    lut.push(round(255 * (v ^ GAMMA)))

foreach x, y in image
    image[x, y] = lut[image[x, y]]

k大于1会使图像变亮,低于1会使图像变暗。伽马校正应用于每个像素分量(即,分别为红色,绿色和蓝色)。以下是k = 1, 2, 3的一些示例:

enter image description here enter image description here enter image description here

执行此操作的完整Python代码(可能有助于Javascript转换):

import sys
from PIL import Image

GAMMA = 1/3.0

lut = []
for i in xrange(256):
    v = i/255.
    lut.append(round(255 * (v ** GAMMA)))

img = Image.open(sys.argv[1])
img = img.point(lambda x: lut[x])
img.save(sys.argv[2])