2012-12-30 212 views
1

可能重複:
Increase CSS brightness color on click with jquery/javascript?更改顏色亮度

在JavaScript中,我如何可以改變一個顏色的亮度,當我們知道的紅,藍,綠值就像它可以在MSPaint中完成?

+0

我認爲,通過不透明 –

+2

@KundanSinghChouhan - 不透明度?我認爲你錯了... –

+0

你可能想看到[Pointy的答案在這裏](http://stackoverflow.com/a/2348659/451969),並操縱'hsl'中的亮度或值(「亮度」) /'hsv',他將RGB提供給HSV或HSL功能。 –

回答

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將圖像變亮,並且低於1的k甲值將圖像變暗。伽馬校正被應用於每個像素分量(即,分別爲紅色,綠色和藍色)。下面是一些例子與k = 1, 2, 3,分別爲:

enter image description hereenter image description hereenter 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])