// Digital Chronophotography with (web)cam 1.0 // By Heino Boekhout | heino@odyssey.nl | http://odyssey.nl // Instructions: // Use the UP arrow key to activate light blending // Use the DOWN arrow key to activate light blending // Use the ALT key to activate screencapture every 30 seconds // Images are saved in the project folder // Change size(); for desired output, by default 640 x 480 import processing.video.*; Capture cam; char mode = BLEND; int vertraging; // aantal seconden tussen screencaptures int tijdschakelaar, uur, minuten, seconden; int dag = day(); int maand = month(); int jaar = year(); int secLog = second(); // eenmalig tbv naam capture opslagmap int minLog = minute(); int uurLog = hour(); String dagLog = nf(dag, 2); String maandLog = nf(maand, 2); String jaarLog = nf(jaar, 4); String urenLog = nf(uurLog, 2); String minutenLog = nf(minLog, 2); String secondenLog = nf(secLog, 2); int teller; // screencapture teller void setup() { //framerate(30); size(640, 480, JAVA2D); background(0); // String s = "IIDC FireWire Video"; cam = new Capture(this, width, height, 15); vertraging = 30; //seconden tussen screenshotopslag tijdschakelaar = 100000; teller=1; } void captureEvent(Capture cam) { cam.read(); } void draw() { blend(cam, 0, 0, width, height, 0, 0, width, height, mode); if(second()%vertraging == tijdschakelaar){ uur = (((teller * vertraging)/600)%60); minuten = (((teller * vertraging)/60)%60); seconden = ((teller * vertraging)%60); String dagFormat = nf(dag, 2); String maandFormat = nf(maand, 2); String jaarFormat = nf(jaar, 4); String uurFormat = nf(uur, 2); String minutenFormat = nf(minuten, 2); String secondenFormat = nf(seconden, 2); String tellerFormat = nf(teller, 4); saveFrame("Grab_"+ urenLog + minutenLog + secondenLog + "_" + dagLog + maandLog + jaarLog + "/" + tellerFormat + "_" + uurFormat + minutenFormat + secondenFormat + "_" + dagFormat + maandFormat + jaarFormat + ".tif"); println("Screencapture " + tellerFormat + " > " + dagFormat + "-" + maandFormat + "-" + jaarFormat + " " + uurFormat + ":" + minutenFormat + ":" + secondenFormat); teller ++; delay(999); } } void keyPressed() { if(key == CODED) { if (keyCode == DOWN) { // dark mode //background(255); mode = DARKEST; println("Activating DARKEST blending"); } else if (keyCode == UP) { //light mode //background(0); mode = LIGHTEST; println("Activating LIGHTEST blending"); } else if (keyCode == ALT) { // screencapture every 30 seconds tijdschakelaar = 0; println("Activating screencapturing every 30 seconds"); } else if (keyCode == LEFT) { mode = ADD; println("Activating ADD blending"); } else if (keyCode == RIGHT) { mode = SUBTRACT; println("Activating SUBTRACT blending"); } else if (keyCode == CONTROL) { //background(0); mode = DODGE; println("Activating DODGE blending"); } else if (keyCode == TAB) { background(0); mode = LIGHTEST; println("Activating LIGHTEST blending"); } else if (keyCode == ENTER) { background(0); mode = DARKEST; println("Activating DARKEST blending"); } } }