可能重复:
Increase CSS brightness color on click with jquery/javascript?
在JavaScript中,当我们知道红色,蓝色,绿色的值时,我怎么能改变颜色的亮度?就像在MSPaint中可以做到的那样?
答案 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
的一些示例:
执行此操作的完整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])