Paula Nicole Castillo: 8vo Proyecto - Imagen Impresionista

De Casiopea
Imagen impresionista - Patos parque japones
TítuloImagen impresionista - Patos parque japones
Tipo de ProyectoProyecto de Curso
Palabras Clavetarea 8
Período2012-
AsignaturaTaller Inicial Común 1ª y 2ª Etapa,
Del CursoImagen Escrita 2012,
CarrerasDiseño Gráfico"Diseño Gráfico" is not in the list (Arquitectura, Diseño, Magíster, Otra) of allowed values for the "Carreras Relacionadas" property.
Alumno(s)Paula Nicole Castillo
ProfesorHerbert Spencer
PDFArchivo:Proyecto8pincelimpresionista.pdf
URLhttp://www.flickr.com/photos/descro/7391521794/in/photostream/lightbox/

Siguiendo el ejemplo entregado por el profesor Herbert se crea un nuevo tipo de pincel con la idea de seguir la intensión del puntillismo impresionista pero remarcando los colores de la imagen tratando de intensificarlos lo mas posible.



/*

 Imagen Escrita 2012: Construcción de un trazo (algoritmo pictórico de la luz y el color) 
 
 */

import processing.pdf.*;

PImage patos;  // la foto: foto de patos parque japones
PFont font;      // la fuente tipográfica
String[] code;   // el texto del código

/*
Al exportar un PDF, Processing translada 
 las unidades de pixeles a puntos tipográficos.
 
 1 pt = 0.0352778 cm
 1 cm = 28.346438837 pt
 */

float margenIzquierda = 30; 
float margenArriba  = 20;
float margenDerecha = 20;
float margenAbajo   = 20;
float escala;

void setup() {

  patos = loadImage("patos.jpg");   // se carga la imagen, se "construye" el objeto PImage patos
  size(609, 765, PDF, "Proyecto8pincelimpresionista.pdf");  // tamaño carta

  // cálculos para escalar desde la imagen hacia el pincel

  float ancho = width - (margenIzquierda + margenDerecha);
  escala = ancho /(float)patos.width;
  noStroke();
  noLoop(); 
  background(255);
  
  font = createFont("Courier", 6); // construyo la tipografía a partir de una fuente de sistema
  textFont(font, 6);

  code = loadStrings("trazo.pde"); // cargo el código "trazo" (el pincel)

}





void draw() {

  float spacer = 5; // Reducción de spacer mejora la resolución de la imagen resultante
  int i = 1;
  boolean cir = true;

  // muestreo regular desde la foto, esto se puede modificar....
  for (int y = 0; y < patos.height; y += spacer) { 
    if (cir) { 
      i = 0;
    } 
    for (int x = 0; x < patos.width; x += spacer) {

      // obtengo el color
      float plotX = map(x, 0, patos.width, margenIzquierda, width-margenDerecha);
      float plotY = map(y, 0, patos.height, margenArriba, margenArriba + (patos.height * escala));
      color c = patos.get(x, y); 

      trazo(plotX, plotY, c, spacer, i);

      if (i==1) {
        i=0;
      }
      else {
        i=1;
      }
    }
    cir = cir == true ? false : true;
  }
  printCode();
  println("----->PDF done!");
  exit();
}
void printCode() {
  float interlinea = 0;
  for (int i = 0; i < code.length; i++) {
    // escribo cada línea de código en la pantalla
    text(code[i], width/4, 2 * margenArriba + patos.height * escala + interlinea);
    interlinea += 15;
  }
}

/*************************************** trazo ****************************************/
  /* Paula Castillo */

void trazo(float x, float y, color c, float amp, int i) {
  fill(c);
    if(i == 2){
      // con el rectangulo se le da intensidad al color destagando los lugares mas oscuros
      // se usa la saturacion para ello y le da un toque al color 
      // lo que ayuda al pixeleado ya que la imagen es a contraluz
    
      rect(x-map(saturation(c), 0, 252, amp, 20)*sqrt(PI)/2*1/2*1/2,
           y-map(saturation(c), 20, 255, amp, 0)*sqrt(PI)/2*1/2*1/2,
           map(saturation(c), 0, 255, amp, 0)*sqrt(PI)/2*1/2, 
           map(saturation(c), 0, 235, amp, 00)*sqrt(PI)/2*1/2);
    }
         
    else {
      
      // las elipses con el hue le dan intensidad al color lo recalca como es
     
      ellipse(x, y, map(hue(c), 0, 255, amp, 0)*1/2, 
        map(hue(c), 0, 255, amp, 0)*1/2);
    }}