Pixel Array
pixel-array.pde
/**
* Pixel Array.
*
* Click and drag the mouse up and down to control the signal and
* press and hold any key to see the current pixel being read.
* This program sequentially reads the color of every pixel of an image
* and displays this color to fill the window.
*/
PImage* img;
int direction = 1;
float signal;
void setup() {
size(640, 360);
noFill();
stroke(255);
frameRate(30);
img = loadImage("sea.jpg");
}
void draw() {
if (signal > img->width*img->height-1 || signal < 0) {
direction = direction * -1;
}
if (isMousePressed()) {
int mx = constrain(mouseX, 0, img->width-1);
int my = constrain(mouseY, 0, img->height-1);
signal = my*img->width + mx;
} else {
signal += 0.33*direction;
}
int sx = int(signal) % img->width;
int sy = int(signal) / img->width;
if (_keyPressed) {
image(img, 0, 0); // draw the whole image
point(sx, sy);
rect(sx - 5, sy - 5, 10, 10);
} else {
color c = img->get(sx, sy);
background(c);
}
}