Inspiration: http://www.toxel.com/inspiration/2012/04/02/typewriter-art/
PImage img;
PFont f;
String message = “So hatte der kleine Prinz trotz des guten Willens seiner Liebe rasch an ihr zu zweifeln begonnen, ihre belanglosen Worte bitter ernst genommen und war sehr unglücklich geworden.”;
float [][] Grid = { { 0, 0 } , { 0, 1 } , { 1, 0 } , { 1, 1 } , { 0, 2 } , { 2, 0 } , { 1, 2 } , { 2, 1 } , { 2, 2 } , { .5, .5 } , { 1.5, 1.5 } , { .5, 1.5 } , { 1.5, .5 } };
void setup() {
size(550,550);
smooth();
img = loadImage(“portrait2.jpg”);
f = createFont(“Courier”, 20, true);
}
void draw() {
background(255);
for (int gridX = 0; gridX < img.width; gridX++) { //alle pixel durchgehen
for (int gridY = 0; gridY < img.height; gridY++) {
// grid position + tile size
float tileWidth = width / (float)img.width;
float tileHeight = height / (float)img.height;
float posX = tileWidth*gridX – tileWidth/2;
float posY = tileHeight*gridY + tileHeight/2;
// get current color
color c = img.pixels[gridY*img.width+gridX];
// greyscale conversion
int greyscale = round(red(c)*0.3+green(c)*0.59+blue(c)*0.11);
int num = (int)map(greyscale, 0, 255, 8, 0);
if (num>0) {
for (int i=0; i<num; i++) {
float posXX = posX + tileWidth/3*Grid[i][0]; //Positionen per Grid bestimmen
float posYY = posY + tileHeight/3*Grid[i][1];
int k = (int)random(0, message.length());
/*float posXX = posX + random(0, tileWidth); //Positionen per Zufall bestimmen
float posYY = posY + random(0, tileHeight);*/
int ran = (int)random(1.5, 3); //random for Fontsize
textFont(f, 3*ran); //Font and Fontsize
fill(0);
text(message.charAt(k), posXX, posYY);
}
}
}
}
noLoop();
}