Ver Mensaje Individual
  #3 (permalink)  
Antiguo 04/05/2012, 06:25
Avatar de Panino5001
Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.145
Antigüedad: 18 años, 8 meses
Puntos: 832
Respuesta: Conocer la cantidad de colores en una imagen

Con lo que sigue podés obtener la cantidad de colores. Como verás, son demasiados para ponerlos en bucle y hacer algo. Si lo que pretendés es generar una paleta de colores de la imagen, lo que tenés que hacer es, primero ordenar los colores y luego, con una función de comparación, excluir los que son similares con una variable de tolerancia. En realidad, dicho así suena complejo pero es bastante sencillo, como podrás ver acá (aunque sea flash te servirá de guía ya que bitMapData e imageData son muy semejantes): http://blog.soulwire.co.uk/flash/act...colour-palette
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin título</title>
<
script type="text/javascript">
function 
_(x){return document.getElementById(x);}
onload=function(){
    
_('c').width=350;
    
_('c').height=379;
    var 
ctx=_('c').getContext('2d');
    
ctx.drawImage(_('im'),0,0);
    var 
data=ctx.getImageData(0,0,_('c').width,_('c').height).data,
    
length=data.length,
    
colores={},
    
i=0,
    
rgb;
    for(;
i<length;i+=4){
        
rgb "rgb("+data[i+0]+","+data[i+1]+","+data[i+2]+")";
       (!
colores[rgb]) ? colores[rgb] = colores[rgb]++;
    }
    var 
count=0;
    for(
rgb  in colores){
        ++
count;
    }
    
_('log').innerHTML=count;
}
</script>
</head>

<body>
<img id="im" src="colores-planos.jpg" />
<canvas id="c"></canvas>
<div id="log"></div>


</body>
</html>