xxxxxxxxxx
// inspired by https://openprocessing.org/sketch/1757893
let cam;
let w = 920; //1920, 1280, 640
let h = 690; //1080, 720, 480
let nr = 1;
let ng = nr + 15;
let nb = ng + 15;
let imgr = [];
let imgg = [];
let imgb = [];
function setup() {
//createCanvas(windowWidth, windowHeight, WEBGL);
createCanvas(920, 690);
noStroke();
cam = createCapture({video: {width: {min: w}, height: {min: h}}});
cam.size(int(w), int(h));
cam.hide();
/*if (isMobileDevice()) {
bg = createGraphics(int(h), int(w));
} else {
bg = createGraphics(int(w), int(h));
}
bg.noStroke();*/
}
function draw() {
background(0);
if (cam.width > 0) {
w = cam.width;
h = cam.height;
}
if (width / height >= w / h) {
nW = width;
nH = width / (w / h);
oX = 0;
oY = (height - nH) / 2;
} else {
nW = height * (w / h);
nH = height;
oX = (width - nW) / 2;
oY = 0;
}
push();
translate(width, 0);
scale(-1, 1);
cam.loadPixels();
let r = createImage(cam.width, cam.height);
let g = createImage(cam.width, cam.height);
let b = createImage(cam.width, cam.height);
r.loadPixels();
g.loadPixels();
b.loadPixels();
for (let i = 0; i < cam.pixels.length; i += 4) {
r.pixels[i] = cam.pixels[i];
r.pixels[i + 1] = 0;
r.pixels[i + 2] = 0;
r.pixels[i + 3] = 255;
g.pixels[i] = 0;
g.pixels[i + 1] = cam.pixels[i+1];
g.pixels[i + 2] = 0;
g.pixels[i + 3] = 255;
b.pixels[i] = 0;
b.pixels[i + 1] = 0;
b.pixels[i + 2] = cam.pixels[i+2];
b.pixels[i + 3] = 255;
}
r.updatePixels();
g.updatePixels();
b.updatePixels();
imgr.unshift(r);
if(imgr.length > nr){
imgr.pop();
}
imgg.unshift(g);
if(imgg.length > ng){
imgg.pop();
}
imgb.unshift(b);
if(imgb.length > nb){
imgb.pop();
}
blendMode(ADD);
if(imgr.length == nr){
let i = int(nr-1);
image(imgr[i], oX, oY, nW, nH)
i ++;
}
if(imgg.length == ng){
let i = int(ng-1);
image(imgg[i], oX, oY, nW, nH)
i ++;
}
if(imgb.length == nb){
let i = int(nb-1);
image(imgb[i], oX, oY, nW, nH)
i ++;
}
pop();
}
function windowResized() {
resizeCanvas(width, height);
}
let lapse = 0; // mouse timer
function mousePressed(){
// prevents mouse press from registering twice
if (millis() - lapse > 400){
save("img_" + month() + '-' + day() + '_' + hour() + '-' + minute() + '-' + second() +
".jpg");
lapse = millis();
}
}
/*function mousePressed() {
if (mouseX > 0 && mouseX < windowWidth && mouseY > 0 && mouseY < windowHeight) {
let fs = fullscreen();
fullscreen(!fs);
}
}*/
function keyPressed(){
save("img_" + month() + '-' + day() + '_' + hour() + '-' + minute() + '-' + second() + ".jpg");
}