我正在寻找一个类似于http://www.cssdrive.com/imagepalette/index.php“完整调色板”的算法,它可以找到给定照片的调色板。
答案 0 :(得分:2)
您可以使用imagecolorat和一些循环读取每个像素颜色值,并计算每种颜色的频率。您可能还希望将此步骤的近距离颜色对齐,这样您就不会只有平直的直方图。一旦你得到每种颜色的直方图,就可以找到n个最高点,这些是你应该使用的n种颜色。祝你好运。
function findPallete($filename, $palletesize) {
$im = imagecreatefromjpeg($filename);
$dimensions = getimagesize($filename);
$frequencies = array();
for($x=0;$x<$dimensions[0];$x++)
for($y=0;$y<$dimensions[1];$y++)
$frequencies[imagecolorat($im,$x,$y)]++;
array_multisort($frequencies,SORT_DESC);
return array_keys(array_slice($frequencies,0,$palletesize));
}