Está en la página 1de 3

/*Ruta 10

--------------------------------------------------------Es
Esta obra multimedia fue seleccionada para el Festival de las Artes de Costa Rica en 2011.
Con esta obra se generaban imágenes a partir de la fusión de imágenes previas
de las localidades de Siquirres y Turrialba, ambas anfitrionas del Festival.
Este es el funcionamiento básico de su algoritmo. Fue escrito para processing y utilizó
en su versión de muestra la librería Sonia, la cual no incluiré hoy para hacer más fácil
su comprensión. Este código está protegido por una licencia Creative Commons que le permite hacer uso
de este material sin fines comerciales. Espero que le sea útil,
jorgemariozuleta
--------------------------------------------------------En
I wrote this code for a digital art work selected at the 2011 Festival de las Artes in Costa Rica.
It merges photos into new images. Those pictures were taken on the route in between
Siquirres and Turrialba (Costa Rica).
This version of the source code was wrote focused on the basic functions.
Some rights are protected with a Creative Commons license.
I hope you find this useful, jorgemariozuleta
*/

PImage img1;
PImage img2;
PImage img3;//Las cuatro imagenes seleccionadas en cada fotografía
PImage img4;//We will use four images for each merge

int indice = 100;


/*--------------------------------------------------------Es
Cantidad de imágenes que se encuentran en la base de datos
en el Festival usé cerca de mil fotografías
tomadas durante mis recorridos entre Turrialba y Siquirres, Costa Rica
--------------------------------------------------------En
Amount of pictures available, it will be necessary to keep this number to make the selection.
At the Festival I took near 1000 pictures of both cities.
*/
int factorBase = 0;

void setup(){
size(1024,720);//Caracteristicas de la fotografía creada – Size of the canvas
}

void draw(){
/*--------------------------------------------------------Es
Saqué del draw el método original de generación de imagen,
Sin embargo esta versión es funcional usando cualquier tecla.
--------------------------------------------------------En
For this version I took out the original method.
Originally it worked with the Arduinos audio library Sonia.
This code was wrote for the keyboard.
*/
}

void keyPressed(){
fusion();// Función principal – Main function.
}

void fusion(){
imagen1 = (round(random(indice)+1))+".JPG";
imagen2 = (round(random(indice)+1))+".JPG";
imagen3 = (round(random(indice)+1))+".JPG";
imagen4 = (round(random(indice)+1))+".JPG";

/*--------------------------------------------------------Es
Carga las cuatro imágenes, inténtelo con sus fotos.
Le recomiendo cuidar el formato de las fotografías
--------------------------------------------------------En
Load the different pics. Try it with you own.
Watch out the size and type of file of the pictures.
*/

img1 = loadImage(imagen1);
image (img1, 0, 1);//Carga la primer foto – Loads the first pic
img2 = loadImage(imagen2);
fundido1();//Carga la segunda y la funde con la anterior – First merge
img3 = loadImage(imagen3);
fundido2();//Realiza un segundo fundido – Second merge
//Cada filtro afecta a la pantalla completa – Please notice that each merge flats the entire screen.
filtro();
}

void filtro(){//Una secuela de efectos de filtro propios de processing


//Son seleccionados por una variable aleatoria – Random variable
int desambiguador=round(random(6));
float factorD=random(1);
if(desambiguador==0){filter(INVERT);}
else if(desambiguador==1){filter(GRAY);}
else if(desambiguador==2){filter(BLUR, factorD*2);}
else if(desambiguador==3){filter(POSTERIZE, (factorD*200)+2);}
else if(desambiguador==4){
filter(THRESHOLD, factorD);
filter(BLUR, factorD*2);
fill(random(256),random(256),random(256),random(20)+60);
rect(0,0,width,height);
img4 = loadImage(imagen4);
blend(img4, 0, 0, width, height, 0, 0, width, height, DIFFERENCE);
}
}

void fundido1(){//Una cadena de tipos de fundidos nativos de processing


// This is a secuence of fades
int desambiguador=round(random(13));
if(desambiguador==1){blend(img2, 0, 0, width, height, 0, 0, width, height, ADD);}
else if(desambiguador==2){blend(img2, 0, 0, width, height, 0, 0, width, height, DARKEST);}
else if(desambiguador==3){blend(img2, 0, 0, width, height, 0, 0, width, height, LIGHTEST);}
else if(desambiguador==4){blend(img2, 0, 0, width, height, 0, 0, width, height, DIFFERENCE);}
else if(desambiguador==5){blend(img2, 0, 0, width, height, 0, 0, width, height, EXCLUSION);}
else if(desambiguador==6){blend(img2, 0, 0, width, height, 0, 0, width, height, MULTIPLY);}
else if(desambiguador==7){blend(img2, 0, 0, width, height, 0, 0, width, height, SCREEN);}
else if(desambiguador==8){blend(img2, 0, 0, width, height, 0, 0, width, height, OVERLAY);}
else if(desambiguador==9){blend(img2, 0, 0, width, height, 0, 0, width, height, HARD_LIGHT);}
else if(desambiguador==10){blend(img2, 0, 0, width, height, 0, 0, width, height, SOFT_LIGHT);}
else if(desambiguador==11){blend(img2, 0, 0, width, height, 0, 0, width, height, DODGE);}
else if(desambiguador==12){blend(img2, 0, 0, width, height, 0, 0, width, height, BURN);}
}

void fundido2(){//Una segunda cadena de efectos


// This is a secuence of effects
int desambiguador=round(random(13));
if(desambiguador==1){blend(img3, 0, 0, width, height, 0, 0, width, height, ADD);}
else if(desambiguador==2){blend(img3, 0, 0, width, height, 0, 0, width, height, DARKEST);}
else if(desambiguador==3){blend(img3, 0, 0, width, height, 0, 0, width, height, LIGHTEST);}
else if(desambiguador==4){blend(img3, 0, 0, width, height, 0, 0, width, height, DIFFERENCE);}
else if(desambiguador==5){blend(img3, 0, 0, width, height, 0, 0, width, height, EXCLUSION);}
else if(desambiguador==6){blend(img3, 0, 0, width, height, 0, 0, width, height, MULTIPLY);}
else if(desambiguador==7){blend(img3, 0, 0, width, height, 0, 0, width, height, SCREEN);}
else if(desambiguador==8){blend(img3, 0, 0, width, height, 0, 0, width, height, OVERLAY);}
else if(desambiguador==9){blend(img3, 0, 0, width, height, 0, 0, width, height, HARD_LIGHT);}
else if(desambiguador==10){blend(img3, 0, 0, width, height, 0, 0, width, height, SOFT_LIGHT);}
else if(desambiguador==11){blend(img3, 0, 0, width, height, 0, 0, width, height, DODGE);}
else if(desambiguador==12){blend(img3, 0, 0, width, height, 0, 0, width, height, BURN);}
}

/*
--------------------------------------------------------Es
Las variables están señaladas antes del setup del programa.
Recuerde que este código esta inscrito en Creative Commons
por favor compártalo, modifíquelo y enséñele a alguien más.
Si lo utiliza, no olvide avisarme, jorgemariozuleta
--------------------------------------------------------En
Try it at home.
Please remember that this algorithm is protected with a
Attribution-NonCommercial-ShareAlike license.
Use this code, modify it and teach someone.
Keep in touch, jorgemariozuleta
*/

This work is licensed under the Creative Commons Attribution-NonCommercial 3.0 Unported License. To view a copy of this
license, visit http://creativecommons.org/licenses/by-nc/3.0/ or send a letter to Creative Commons, 444 Castro Street,
Suite 900, Mountain View, California, 94041, USA.