2012-01-10 2 views

답변

2

imagecolorat 및 일부 루프를 사용하여 각 픽셀 색상 값을 읽고 각 색상의 빈도를 계산할 수 있습니다. 평면 히스토그램이 없도록이 단계에서 가까운 색을 함께 라운드 할 수도 있습니다. 각 색상의 히스토그램을 작성하고 가장 높은 점을 찾으면 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)); 
}