i want to find the dominant color in image, how can i do it ?
it would be great if i can get this in HEX code (exm: #eeeeee)
Dominant color is achieved when one color serves as the focal point in a photo. The color expresses more intensity among other colors in the picture. This type of photo tends to instantly catch the attention of the viewer.
To analyze colors in a reference image, you can use Adobe Color CC to see its color palette. Import a reference picture into Adobe Color CC, or use the Select Color Adjustment Layer in Photoshop to create a Saturation Map. This allows you to see the concentration of colors in that image.
To find the most "dominant" color in an image, meaning the color that is most prevalent in the image: you'd need to create a histogram of the image.
Here is an the code from this article on how to create a histogram in PHP. (Website has gone off line several times)
<?php $source_file = "test_image.jpg"; // histogram options $maxheight = 300; $barwidth = 2; $im = ImageCreateFromJpeg($source_file); $imgw = imagesx($im); $imgh = imagesy($im); // n = total number or pixels $n = $imgw*$imgh; $histo = array(); for ($i=0; $i<$imgw; $i++) { for ($j=0; $j<$imgh; $j++) { // get the rgb value for current pixel $rgb = ImageColorAt($im, $i, $j); // extract each value for r, g, b $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; // get the Value from the RGB value $V = round(($r + $g + $b) / 3); // add the point to the histogram $histo[$V] += $V / $n; } } // find the maximum in the histogram in order to display a normated graph $max = 0; for ($i=0; $i<255; $i++) { if ($histo[$i] > $max) { $max = $histo[$i]; } } echo "<div style='width: ".(256*$barwidth)."px; border: 1px solid'>"; for ($i=0; $i<255; $i++) { $val += $histo[$i]; $h = ( $histo[$i]/$max )*$maxheight; echo "<img src=\"img.gif\" width=\"".$barwidth."\" height=\"".$h."\" border=\"0\">"; } echo "</div>"; ?>
In that example $max
is your most "dominant" color.
There is a PHP class developed that handles this, named color extract. However, know that doing this on the server side will require substantial system resources. You may wish to instead do this with canvas.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With