Seguro que en servidor va más rápido, pero tengo curiosidad desde hace tiempo
de conseguir hacer eso...
El caso es que fuerza bruta no parece muy optimo, además que con ese sistema
una foto que tenga mucho rojo y verde te va decir que el promedio es amarillo,
aunque no tenga nada en la imagen.Vamos, tiene que ser por vecindaz, es decir,
tienes que encontrar masas de color. Lo que me sugiere que se deberia usar al
ColorMatrixFilter o el Convolution filter para hacerlo. Pero vamos, no tengo ni
idea de como. Si alguien se le ocurre seria bastante interesante el tema....
Por otra parte no creo que necesites hacer eso para lograr ese efecto, yo creo
que simplemente adjudica a cada pixel una imagen dependiendo del color, y
cuando hay los suficientemente pocos (imagen ampliada).
un saludo,
Joseba
________________________________
De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de David
Gironella
Enviado el: martes, 23 de mayo de 2006 15:40
Para: [email protected]
Asunto: RE: [ASNativos] Average de una foto
En php seria facil, usando las librerias GD. Y supongo que lo mejor
seria guardar el resultado de la media en una base de datos. Para mi el flash
nunca ha dado buenos rendimientos quando se usan demasiados bucles.
Giro.
-----Mensaje original-----
De: [email protected] [mailto:[EMAIL PROTECTED] nombre de José
Tomás Tocino
Enviado el: martes, 23 de mayo de 2006 15:04
Para: [email protected]
Asunto: [ASNativos] Average de una foto
Buenas,
hace poco me pasaron esta dirección
http://interact10ways.com/usa/information_interactive.htm . Está hecho en
Shockwave. He pensado que se podría hacer en flash también, por lo que he
empezado a pensar cómo podría hacerlo. La idea sería tener una colección de
fotografías con un color asginado a cada una, y luego reemplazar cada píxel de
la imagen original por esas pequeñas imágenes.
He creado una función que hace una "media" entre todos los
colores de una foto, pero es bastante lenta y chupa mucha CPU:
<code>
function averageFoto(mibitmap:BitmapData){
var ancho:Number = mibitmap.width;
var alto:Number = mibitmap.height;
var pixels:Number = ancho * alto;
var rojo:Number = 0;
var verde:Number = 0;
var azul:Number = 0;
for(var foo_ancho = 0; foo_ancho < ancho; foo_ancho ++){
for(var foo_alto = 0; foo_alto < alto; foo_alto ++){
pixel = mibitmap.getPixel(foo_ancho, foo_alto);
rojo += (pixel >> 16 & 0xFF);
verde += (pixel >> 8 & 0xFF);
azul += (pixel & 0xFF);
}
}
fin_rojo = rojo / pixels;
fin_verde = verde / pixels;
fin_azul = azul / pixels;
//trace("R: " + fin_rojo + ", G: " + fin_verde + ", B: " +
fin_azul);
color = "0xFF" + fin_rojo.toString(16) +
fin_verde.toString(16) + fin_azul.toString(16);
return color;
}</code>
Mi pregunta es, ¿sería más factible hacerlo con un lenguaje de
servidor, como php? o ¿hay otra forma de hacer la media de la foto de forma más
cpu-friendly?
Un saludo.
--
José Tomás Tocino
http://www.om3.com.es #¶+²§������Ǜ
----------------------------------- ASNativos
http://www.5dms.com/listas ------------------------------------
-----------------------------------
ASNativos
http://www.5dms.com/listas
------------------------------------