2012-01-10 17 views

答えて

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)); 
} 
関連する問題