Ya te puse cómo obtener la distancia entre dos colores para elegir el más próximo. No se casi nada de la teoría de color, así que es probable que exista otra fórmula de proximidad que de mejores resultados.
Código PHP:
Ver original<?php
header( "Content-type: image/png" ); $imageName="cat2 - copia.jpg";
);
function colorCercano($color, $paleta){
$distancia=INF;
$mejor=0;
for ($i=0;$i<$n;$i++)
{
$actual=abs($color[0]-$paleta[$i][0])+abs($color[1]-$paleta[$i][1])+abs($color[2]-$paleta[$i][2]); //$actual=sqrt(pow($color[0]-$paleta[$i][0],2)+pow($color[1]-$paleta[$i][1],2)+pow($color[2]-$paleta[$i][2],2));
if ($distancia>$actual)
{
$distancia=$actual;
$mejor=$i;
}
}
return $paleta[$mejor];
}
for ($x=0;$x<$size[0];$x++)
{
for ($y=0;$y<$size[1];$y++)
{
$colorFinal=colorCercano
(array($pixelColor["red"],$pixelColor["green"],$pixelColor["blue"]),$paleta);
}
}