Name a color

An example showing how to get color name from RGB using Tizen 2.3.
var rgbToHsv = function(rgb) {
  var r = rgb[0];
  var g = rgb[1];
  var b = rgb[2];
  r /= 255, g /= 255, b /= 255;
  var max = Math.max(r, g, b),
    min = Math.min(r, g, b);
  var h, s, v = max;
  var d = max - min;
  s = max === 0 ? 0 : d / max;

  if (max == min) {
    h = 0;
  } else {
    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 * 360, s * 100, v * 100];
};

var nameColor = function(rgb) {
  var hues = [
    [0, 'Red'],
    [15, 'Orange'],
    [40, 'Yellow'],
    [80, 'Green'],
    [170, 'Blue'],
    [270, 'Violet'],
    [320, 'Red']
  ];

  var hsv = rgbToHsv(rgb);
  var h = hsv[0],
    s = hsv[1],
    v = hsv[2],
    lightness = '';

  if (v < 20) {
    return 'Black';
  }

  if (s < 10) {
    if (v < 50) {
      return 'Dark Gray';
    } else if (v >= 50 && v < 90) {
      return 'Gray';
    } else {
      return 'White';
    }
  }

  if (v < 75) {
    lightness = 'Dark';
  } else {
    if (s < 75) {
      lightness = 'Light';
    }
  }

  var colorByHue = hues[0][1];
  for (var i = 1; i < hues.length; i++) {
    if (h >= hues[i][0]) {
      colorByHue = hues[i][1];
    } else {
      break;
    }
  }

  return (lightness + ' ' + colorByHue).trim();
};

nameColor([255, 0, 0]); // Red

Responses

0 Replies