Converts an HSL color value to RGB. - Java 2D Graphics

Java examples for 2D Graphics:Color RGB

Description

Converts an HSL color value to RGB.

Demo Code


//package com.java2s;

public class Main {
    public static void main(String[] argv) throws Exception {
        float[] hsl = new float[] { 34.45f, 35.45f, 36.67f, 37.78f,
                37.0000f, 37.1234f, 67.2344f, 68.34534f, 69.87700f };
        System.out.println(java.util.Arrays.toString(hslToRgb(hsl)));
    }/*from w  ww . jav  a  2s  .c  om*/

    /**
     * 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
     */
    public static float[] hslToRgb(float[] hsl) {
        float r, g, b;
        float h, s, l;
        h = hsl[0];
        s = hsl[1];
        l = hsl[2];

        if (s == 0) {
            r = g = b = l; // achromatic
        } else {

            float q = l < 0.5 ? l * (1 + s) : l + s - l * s;
            float p = 2 * l - q;
            r = hue2rgb(p, q, h + 1 / 3);
            g = hue2rgb(p, q, h);
            b = hue2rgb(p, q, h - 1 / 3);
        }

        return new float[] { r, g, b };
    }

    private static float hue2rgb(float p, float q, float 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;
    }
}

Related Tutorials