Someone asked if it was possible to find the dominant colour (the more frequent colour, in %) of an image.

So I read about the GD PHP Library, which enables image support. I found the interesting function imageColorAt() which the colour of a specific pixel. Hence, my function consists of resizing to a known size, 100 x 100, then looping into each pixel, storing it’s colour into an array, then sorting the array to find the more frequent key.

Here’s the result :
```
function getDominantColour(\$image, \$type='jpeg') // \$type can be gif, jpeg or png
{
// This function needs GD Library enabled

eval('\$source = imagecreatefrom' . \$type . '("' . \$image . '");'); // we load the source image
\$source_x = imagesx(\$source); // source's X
\$source_y = imagesy(\$source); // source's Y
\$resized_x = 100; // resized image's X
\$resized_y = 100; // resized image's Y
\$resized= imagecreatetruecolor(\$resized_x, \$resized_y); // we create a blank 100 x 100 image
imagecopyresampled(\$resized, \$source, 0, 0, 0, 0, \$resized_x, \$resized_y, \$source_x, \$source_y); // We then copy and resized the source image into the blank image

// Required vars declaration
\$colours = array();
\$rgb = '';
\$index = array();
for (\$x=0; \$x<100; \$x++) // We loop into the pixels X
{
for (\$y=0; \$y<100; \$y++) // We loop into the pixels Y
{
\$rgb = imagecolorat(\$resized, \$x, \$y); // get the RGB of the pixel
\$index = imagecolorsforindex(\$resized, \$rgb); // Get the RGB Index
\$key = 'R' . \$index['red'] . 'G' . \$index['green'] . 'B' . \$index['blue']; // Put it into a string
if (empty(\$colours[\$key])) // If it's the first time this colour is encountered
{
\$colours[\$key] = 1; // We give it a value of 1
} else { // If it's not the first time it is encountered
\$colours[\$key]++; // We increment its value
}
}
}
arsort(\$colours, SORT_NUMERIC); // We then sort the colours array so that the first one is the most frequent one
return key(\$colours); // we return the most frequent value
}
```

Working with images sure is fun. Looking forward to have more functions with the GD library