可能重複:
Algorithm to convert RGB to HSV and HSV to RGB?HSV(0 .. 255)RGB(0 .. 255)
是否有人對如何使用HSV值轉換爲RGB時解釋該值是0到255?此外,
作爲參考,我想在C++中做到這一點。
可能重複:
Algorithm to convert RGB to HSV and HSV to RGB?HSV(0 .. 255)RGB(0 .. 255)
是否有人對如何使用HSV值轉換爲RGB時解釋該值是0到255?此外,
作爲參考,我想在C++中做到這一點。
function hsvToRgb(h, s, v){
var r, g, b;
var i = Math.floor(h * 6);
var f = h * 6 - i;
var p = v * (1 - s);
var q = v * (1 - f * s);
var t = v * (1 - (1 - f) * s);
switch(i % 6){
case 0: r = v, g = t, b = p; break;
case 1: r = q, g = v, b = p; break;
case 2: r = p, g = v, b = t; break;
case 3: r = p, g = q, b = v; break;
case 4: r = t, g = p, b = v; break;
case 5: r = v, g = p, b = q; break;
}
return [r * 255, g * 255, b * 255];
}
編輯:
我曾經寫過一個顏色選擇器和用於瞭解這一切。那時候,我看着photoshop顏色選擇器,試着繞過十字線,觀察hsv/rgb數字的變化並找出它們的工作原理。在這種情況下,i
似乎找到在這一點上,主色調,色相,指出它。色調的值實際上是一種完全飽和的顏色循環,以紅色開始並以紅色結束。有一個三角形,每個點代表R,G和B,其中0度是R.在R和G之間,它是黃色,在R和B之間,它是品紅色,在B和G之間,它是青色。我們共有6種顏色。這6種顏色來自情況0至5.
對不起,我應該發佈我希望HSV(0..255)到RGB(0..255)和一個很好的解釋 – judeclarke
輸出已經在0..255範圍內。您可以將算法轉換爲輸入範圍爲0..255,方法是將h,s,v分別除以255.但坦率地說,如果您沒有看到,則會出現更大的問題 – hirschhornsalz
@ drhirsch,粗魯無禮,沒有幫助。由於代碼中沒有解釋,因此我看不到輸入是如何(0 .. 255)。例如,爲什麼這樣的情況?每個案件都做了什麼? – judeclarke
http://en.wikipedia.org/wiki/HSL_and_HSV哪一部分 - 轉換爲RGB你不明白?簡單地在這裏重新發佈一個算法將是沒有意義的,請告訴我們哪個部分不工作/你不明白它 –
@ Ravadre,我希望有更多的「lamens術語」的東西。維基百科以不必要的更復雜的方式呈現公式而臭名昭着。 – judeclarke
@ Kerrek SB,當時真的很粗魯嗎? – judeclarke