int gridWidth = 100; int gridHeight = 100; float pointDistX = 5; float pointDistY = 5; ArrayList<Integer> imageGreyScaleList = new ArrayList<Integer>(); PImage baseImage; void setup() { size(700, 700); smooth(); baseImage = loadImage("data/image.jpg"); baseImage.loadPixels(); int loc; for (int i = 0; i < baseImage.width; i++) { for (int j = 0; j < baseImage.height; j++) { loc = i + j*baseImage.width; println(baseImage.pixels[loc]); color pixel = baseImage.pixels[loc]; int greyScale = floor(red(pixel)+green(pixel)+blue(pixel)/3); imageGreyScaleList.add(greyScale); } } }; void draw() { background(255); pushMatrix(); // translate graphic to the center of the screen translate((width-(pointDistX*gridWidth))/2, (height-(pointDistY*gridHeight))/2); int loc; for (int i = 0; i<gridHeight; i++ ) { beginShape(); for (int j = 0; j<gridWidth; j++) { loc = i + j*baseImage.width; float posX = j*pointDistX; float posY = i*pointDistY+map(imageGreyScaleList.get(loc), 0, 255, 0, 10); // offset y coordinate based on the pixels colour curveVertex(posX, posY); }; endShape(); }; popMatrix(); };