SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elly Awesome

    Elly Awesome

    15 ŞUBAT 2010
  • tseyina

    tseyina

    2 AĞUSTOS 2006
  • tunez4you

    tunez4you

    20 EKİM 2008