Daniela Labra: Autoretrato con pincel en Processing

De Casiopea



TítuloAutoretrato con pincel en Processing
Tipo de ProyectoProyecto de Taller
Período2011-2011
AsignaturaPresentación del Diseño Industrial 3
Del CursoPresentación al Lenguaje Abierto
CarrerasDiseño Gráfico, Diseño Industrial
Alumno(s)Daniela Labra
ProfesorMarcelo Araya, Herbert Spencer

Autoretrato con pincel en processing

Elaboración de un autoretrato por medio de la creación de un tipo de pincel en el programa Processing


Código desde Processing

import processing.pdf.*;
PImage retrato;

float margenIzquierda = 85;   // 3 cm
float margenArriba    = 85;
float margenDerecha   = 85;

float escala;
boolean pinta;
int x, y; 

void setup() {
  retrato = loadImage("daniela.jpg");  
  size(750, 1500);     // 27 x 27 cm.  debiera ser  (2423, 4846); 85 x 170 cm
  smooth();
  beginRecord(PDF, "Paisaje"+day()+hour()+minute()+".pdf");  

  float ancho = width - (margenIzquierda + margenDerecha);
  escala = ancho / (float)retrato.width; 
  strokeCap(ROUND);
  background(255); 
  x = y = 0;       
  pinta = true;
 }


void draw() {

  float spacer = 12; 

  float plotX = map(x, 0, retrato.width, margenIzquierda, width-margenDerecha);
  float plotY = map(y, 0, retrato.height, margenArriba, margenArriba + (retrato.height * escala));

  color c = retrato.get(x,y);
  if(pinta) pincel(plotX, plotY, c, spacer);

  if (x < retrato.width - spacer) {
    x+= spacer;
  }
  else if(y < retrato.height) {
    x = 0; 
    y += spacer;
  }

  if (y > retrato.height) {
    println("listo!");
    endRecord();
    pinta = false;
    // exit();
  }
}

void pincel(float x, float y, color c, float amp) {

  // si el color es oscuro tiene m´s achurados
  int achurados = (int)map(brightness(c), 0, 255, 50, 0);
  float r = random(1, 6);

  for (int i = 0; i < achurados; i++) {
    pushMatrix();
    {
      translate(x + random(-amp,amp), y + random (-amp,amp)); 
     
      stroke(c, 80); 
       if (brightness(c) < 125) {
    fill(c, 50);
    ellipse(amp, amp, r,r);
    strokeWeight(r*2);
  }
  else if(brightness(c) > 125 ) {
    fill(c, 120);
     ellipse(amp, amp, r,r);
  }
          }
    popMatrix();
  }
}
void mousePressed() {
  endRecord();
  exit();
}