1

可能重复:
使用 jquery/javascript 单击时增加 CSS 亮度颜色?

在 JavaScript 中,当我们知道红色、蓝色、绿色的值时,我如何改变颜色的亮度,就像在 MSPaint 中一样?

4

1 回答 1

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]]

大于 1的值k会使图像变亮,小于 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])
于 2012-12-30T14:04:50.457 回答