sábado, 23 de junio de 2012

Propuesta de ASCII Art en Processing PT 2


El primer acercamiento que se tuvo se ve bastante bien, pero es necesario mejorar la cantidad de caracteres. Aquí el código.

PImage img;
int cols, rows;
int altoAscii = 10;
float cellw, cellh;
PFont font;

void setup() {
  size(444,599);
  img = loadImage("CuencaCollage_by_Ultraforce777.png");

  //cargar tipografía
  font = loadFont("Ubuntu-48.vlw");
}

void draw() {
  cellw = int(altoAscii/2);
  cellh = int(altoAscii);
  cols = int(img.width/cellw);
  rows = int(img.height/cellh);
 
  for(int i=0; i<cols; i++) {
    for(int j=0; j<rows; j++) {
      float x = i*cellw;
      float y = j*cellh;
     
      int k = int(x)+int(y)*img.width;
     
      int rojo = int(red(img.pixels[k]));
      int verde = int(green(img.pixels[k]));
      int azul = int(blue(img.pixels[k]));
      int gris = int((rojo+verde+azul)/3);
     
      String caracter = "";

      if(gris>0&&gris<=25){caracter = "#";}
      if(gris>25&&gris<=50){caracter = "@";}
      if(gris>50&&gris<=100){caracter = "&";}
      if(gris>100&&gris<=150){caracter = "i";}
      if(gris>150&&gris<=200){caracter = "*";}
      if(gris>200&&gris<=250){caracter = "+";}
      if(gris>250&&gris<=255){caracter = ".";}

      fill(0);
      textFont(font, altoAscii);
      textAlign(LEFT);
      text(caracter, i*altoAscii*0.5, j*altoAscii);
    }
  }
}

No hay comentarios:

Publicar un comentario