vis4.net

Hi, I'm Gregor, welcome to my blog where I mostly write about data visualization, cartography, colors, data journalism and some of my open source software projects.

Color Space Transformations in ActionScript

#color#color

Here is a small actionscript3 class for converting colors between different color spaces like RGB, HSV, HSL and HSB. You can input and output the colors either as integer or string value or as serperated color components (e.g. hue, saturation and lightness). The class has no other dependencies.

API

/*

  • Modes:

  • PerceptualColor.HSV, PerceptualColor.HSL, PerceptualColor.HSI */

    var color:PerceptualColor;

    // Konstruktoren color = new PerceptualColor(mode:String = ‘hsl’); color = PerceptualColor.fromInt(i:uint, mode = ‘hsl’); color = PerceptualColor.fromHex(h:String, mode = ‘hsl’); // format: “#RRGGBB” color = PerceptualColor.fromRGB(r:uint, g:uint, b:uint, mode = ‘hsl’); color = PerceptualColor.fromHSV(h:Number, s:Number, v:Number, mode = ‘hsv’); color = PerceptualColor.fromHSL(h:Number, s:Number, l:Number, mode = ‘hsl’); color = PerceptualColor.fromHSI(h:Number, s:Number, i:Number, mode = ‘hsi’);

    // RGB-Setter (Getter äquivalent) color.intValue = 0x00BBFF; color.hexValue = “#00BBFF”; color.red = 0; color.green = 125; color.blue = 40; color.setRGB(0, 125, 40);

    // HSX-Setter (Getter äquivalent) color.hue = 0; color.saturation = 0.6; // nur im HSV-Modus color.value = 1; color.setHSV(0, 0.6, 1); // nur im HSL-Modus color.lightness = 1; color.setHSL(0, 0.6, 1); // funktioniert nur im HSV-Modus color.intensity = 1; color.setHSI(0, 0.6, 1);

    // Modus ändern color.mode = PerceptualColor.HSL;

Usage Examples

/*

  • Beispiel 1:

  • Einlesen einer Integer-Farbe, Sättigung auf 50% setzen, Hex-Farbe ausgeben */ var color:PerceptualColor = PerceptualColor.fromInt(0xFF0000); color.saturation = 0.5; trace(color.hexValue); // Ausgabe: “#BF3F3F”

    /*

  • Beispiel 2:

  • Einlesen einer RGB-Farbe, Helligkeit auf 70% begrenzen, RGB-Were ausgeben */ color = PerceptualColor.fromRGB(220, 250, 180); if (color.lightness > 0.7) color.lightness = 0.7; trace(color.red, color.green, color.blue); // Ausgabe: “188 245 111”

    /*

  • Beispiel 3:

  • Einlesen einer HSV-Farbe, Umwandlung in den HSL-Raum, Helligkeit auf 50% setzen,

  • zurück in den HSV-Raum umwandeln, Ausgabe */ color = PerceptualColor.fromHSV(0, .7, .9); trace(color.hue, color.saturation, color.value); // Ausgabe: “0 0.7 0.9” color.mode = PerceptualColor.HSL; trace(color.hue, color.saturation, color.lightness); // Ausgabe: “0 0.755 0.582” color.lightness = 0.5; color.mode = PerceptualColor.HSV; trace(color.hue, color.saturation, color.value); // Ausgabe: “0 0.861 0.874”

Download

Download: PerceptualColor.as (10,4 kB)

Comments

Stojan Ilic (Sep 12, 2011)

File PerceptualColor.as isn’t on the server

Gregor Aisch (Sep 13, 2011)

Please find the newer version here: https://github.com/gka/vis4.as/blob/master/src/net/vis4/color/Color.as