Skip to content

Find dominant colors in an image using K-means clustering

License

Notifications You must be signed in to change notification settings

naomai/php-dominantcolor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PHP Dominant Color library

This library extracts dominant colors from images - those, which are most likely to attract the viewer's eyes.

Album arts example

The library uses K-means clustering method to group image pixels into different color bins. Those colors are then evaluated by their saturation and differences between others. Two of them are picked as most prominent (primary and secondary).

Usage

We want to find most prominent colors with three additional colors from image heart.png.

$imageSrc = "heart.png";
$totalNumberOfColors = 5; // primary + secondary + 3 additional

$colorInfo = Naomai\DominantColor::fromFile($imageSrc, $totalNumberOfColors);

Number of colors is the number of color bins, it also should include primary and secondary colors.

The result is an array of following structure:

$colorInfo = [
	'primary' => 0xDEFDEF, 
	'secondary' => 0xABCABC,
	'palette' => [
		0 => ['color' => 0xABCABC, 'score' => 0.8],
		/// etc
	]

All colors are formatted as standard RGB integer in form: 0xRRGGBB. palette contains additional colors. The score field is a score from secondary color choosing algorithm. The chosen secondary color has value of 1.0.

See examples directory for a visual demonstration.

This project relies on the elegant PHP K-Means library by Benjamin Delespierre.