Нужно получить все или N-найболее используемых цветов?
Найболее используемые можно получить так
// The original image is the average colors
$im = new Imagick( "test.png" );
// Reduce the amount of colors to 10
$im->quantizeImage( 10, Imagick::COLORSPACE_RGB, 0, false, false );
// Only save one pixel of each color
$im->uniqueImageColors();
// Get ImagickPixelIterator
$it = $im->getPixelIterator();
// Reset the iterator to begin
$it->resetIterator();
// palette
$palette = array();
// Loop trough rows
while ($row = $it->getNextIteratorRow()) {
// Loop trough columns
foreach ($row as $pixel) {
$color = $pixel->getColor();
foreach (array('r', 'g', 'b') as $channel) {
$color[$channel] = dechex($color[$channel]);
if (strlen($color[$channel]) != 2) {
$color[$channel] = '0' . $color[$channel];
}
}
$palette[] = $color['r'] . $color['g'] . $color['b'];
}
}
// print palette
print_r($palette);