Better Way To Determine Pixel's Hue Range


I’m working on an application that assigns color names based on the hue of a pixel in an image. The method I am currently using is inelegant:

  1. Create a String array that holds the names of colors that I want to use.
  2. Get the hue at pixels[loc].
  3. Use a billion “if” statements to check which range the pixel’s hue falls into.
  4. Print the color name (to console, for now).

Here is an example of the code:

if ( 0.0 <= hue && hue < 30.0) {println(colorNameArray[0]);} // Red
else if ( 30.0 <= hue && hue < 60.0) {println(colorNameArray[1]);} // Orange
else if ( 60.0 <= hue && hue < 90.0) {println(colorNameArray[2]);} // Yellow

Is there a neater way to do this? Thank you!

1 Like

Maybe. Is each section 30 hue-units big? If so, just divide:


If they’re not all 30, then you’ll have to put their amounts into an array. Then you can loop over it:

int[] bounds = {0, 30, 40, 50, 90, 120};

for( int i = 0; i < bounds.length-1; i++){
  if( bounds[i] <= hue && hue < bounds[i+1]){

Perfect, exactly what I was looking for.

Thank you very much!

You might also be interested in

Java also has built-in names for a small palette of colors:

so you could iterate over those and compare if you didn’t want to provide your own.


These were great reads, I learned something new and feel closer to solving my problem.

Thank you very much for your reply and your time!

1 Like