• # en javascript?

    Posté par . En réponse au message changement d'espace de couleur. Évalué à 1.

    j'ai trouvé ca sur http://javascriptfr.com/code.aspx?ID=17130(...)
    en cherchant rgb2hsl via mon ami google :)


    / JScript source code
    //Red : 0..255
    //Green : 0..255
    //Blue : 0..255
    //Hue : 0,0..360,0<=>0..255
    //Lum : 0,0..1,0<=>0..255
    //Sat : 0,0..1,0<=>0..255

    //Retourne un tableau de 3 valeurs : H,S,L
    function RGB2HSL (r, g, b)
    {
    red = Math.round (r);
    green = Math.round (g);
    blue = Math.round (b);
    var minval = Math.min (red, Math.min (green, blue));
    var maxval = Math.max (red, Math.max (green, blue));
    var mdiff = maxval - minval + 0.0;
    var msum = maxval + minval + 0.0;
    var luminance = msum / 510.0;
    var saturation;
    var hue;
    if (maxval == minval)
    {
    saturation = 0.0;
    hue = 0.0;
    }
    else
    {
    var rnorm = (maxval - red) / mdiff;
    var gnorm = (maxval - green) / mdiff;
    var bnorm = (maxval - blue) / mdiff;
    saturation = (luminance <= 0.5) ? (mdiff / msum) : (mdiff / (510.0 - msum));
    if (red == maxval)
    hue = 60.0 * (6.0 + bnorm - gnorm);
    if (green == maxval)
    hue = 60.0 * (2.0 + rnorm - bnorm);
    if (blue == maxval)
    hue = 60.0 * (4.0 + gnorm - rnorm);
    if (hue > 360.0)
    hue -= 360.0;
    }
    return new Array (Math.round (hue * 255.0 / 360.0), Math.round (saturation * 255.0), Math.round (luminance * 255.0));
    }

    function Magic (rm1, rm2, rh)
    {
    var retval = rm1;
    if (rh > 360.0)
    rh -= 360.0;
    if (rh < 0.0)
    rh += 360.0;
    if (rh < 60.0)
    retval = rm1 + (rm2 - rm1) * rh / 60.0;
    else if (rh < 180.0)
    retval = rm2;
    else if (rh < 240.0)
    retval = rm1 + (rm2 - rm1) * (240.0 - rh) / 60.0;
    return Math.round (retval * 255);
    }

    //Retourne un tableau de 3 valeurs : R,G,B
    function HSL2RGB (h, s, l)
    {
    var hue = h * 360.0 / 255.0;
    var saturation = s / 255.0;
    var luminance = l / 255.0;
    var red;
    var green;
    var blue;
    if (saturation == 0.0)
    {
    red = green = blue = Math.round (luminance * 255.0);
    }
    else
    {
    var rm1;
    var rm2;
    if (luminance <= 0.5)
    rm2 = luminance + luminance * saturation;
    else
    rm2 = luminance + saturation - luminance * saturation;
    rm1 = 2.0 * luminance - rm2;
    red = Magic (rm1, rm2, hue + 120.0);
    green = Magic (rm1, rm2, hue);
    blue = Magic (rm1, rm2, hue - 120.0);
    }
    return new Array (red, green, blue);
    }