28 ŞUBAT 2010, Pazar
Amaçla kullanılan renk RGB dönüşüm için
Merhaba, bir araç ya da RGB arasında amaçla kullanılan renk dönüştürme algoritması arıyorum. Amaçla kullanılan çok şanslı bir dönüştürücü aramaya sahip değilim bu yüzden çok yaygın olarak kullanılmaz gibi geliyor bana. Eğer bir ya da kolay uygulanabilir bir algoritma biliyorsanız çok makbule geçecek.
CEVAP
29 ŞUBAT 2012, ÇARŞAMBA
Garry Tan his blog çözüm şu anda ölü bir mjijackson.com görmesinin) gönderildi. Kodu yeniden ilan aşağıda:
RGB amaçla kullanılan:
/**
* Converts an HSL color value to RGB. Conversion formula
* adapted from http://en.wikipedia.org/wiki/HSL_color_space.
* Assumes h, s, and l are contained in the set [0, 1] and
* returns r, g, and b in the set [0, 255].
*
* @param Number h The hue
* @param Number s The saturation
* @param Number l The lightness
* @return Array The RGB representation
*/
function hslToRgb(h, s, l){
var r, g, b;
if(s == 0){
r = g = b = l; // achromatic
}else{
var hue2rgb = function hue2rgb(p, q, t){
if(t < 0) t = 1;
if(t > 1) t -= 1;
if(t < 1/6) return p (q - p) * 6 * t;
if(t < 1/2) return q;
if(t < 2/3) return p (q - p) * (2/3 - t) * 6;
return p;
}
var q = l < 0.5 ? l * (1 s) : l s - l * s;
var p = 2 * l - q;
r = hue2rgb(p, q, h 1/3);
g = hue2rgb(p, q, h);
b = hue2rgb(p, q, h - 1/3);
}
return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
}
Amaçla kullanılan RGB:
/**
* Converts an RGB color value to HSL. Conversion formula
* adapted from http://en.wikipedia.org/wiki/HSL_color_space.
* Assumes r, g, and b are contained in the set [0, 255] and
* returns h, s, and l in the set [0, 1].
*
* @param Number r The red color value
* @param Number g The green color value
* @param Number b The blue color value
* @return Array The HSL representation
*/
function rgbToHsl(r, g, b){
r /= 255, g /= 255, b /= 255;
var max = Math.max(r, g, b), min = Math.min(r, g, b);
var h, s, l = (max min) / 2;
if(max == min){
h = s = 0; // achromatic
}else{
var d = max - min;
s = l > 0.5 ? d / (2 - max - min) : d / (max min);
switch(max){
case r: h = (g - b) / d (g < b ? 6 : 0); break;
case g: h = (b - r) / d 2; break;
case b: h = (r - g) / d 4; break;
}
h /= 6;
}
return [h, s, l];
}
Bunu Paylaş:
Teknikleri JavaScript bir sınıf tanıml...
App.Visual Studio 2010 Web Projeleri o...
Nasıl Onaltılık renk kodu kullanarak R...
Nasıl çıkış renk değişimi Linux için e...
Base 64 için kullanılan kodlama nedir?...