像PHP中的像素化照片的调色板

时间:2012-01-10 20:15:06

标签: php algorithm

我正在寻找一个类似于http://www.cssdrive.com/imagepalette/index.php“完整调色板”的算法,它可以找到给定照片的调色板。

1 个答案:

答案 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));
}