【问题标题】:Changing a color brightness [duplicate]更改颜色亮度 [重复]
【发布时间】:2012-12-14 20:42:22
【问题描述】:

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

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

【问题讨论】:

标签: javascript colors rgb


【解决方案1】:

这个问题与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])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    • 2012-08-03
    • 1970-01-01
    • 2017-09-17
    相关资源
    最近更新 更多