28. Oktober 2011
A simple camera application with zoom and different shapes called PCam. Download it as OSX application: DownloadCode:
<pre>//PixelCam by Joachim Hummel //24.11.2011 import processing.video.*; //Load images PImage leathercam; PImage photobutton; PImage changebutton; PImage innerchangebutton; //V's int n; int m; int i=0; int numPixels; int blockSize = 10; int brx; int bry; int nb_images; int ausloeser = 0; int form = 1; int cbx; int cby; float bsize; //Capture Camera color myMovieColors[]; Capture myMovie; //Load Slider Slider sliderR = null; void setup() { //Load Images leathercam = loadImage("cam.png"); photobutton = loadImage("photobutton.png"); changebutton = loadImage("changebutton.png"); innerchangebutton = loadImage("innercb.png"); nb_images=0; //Slider sliderR = new Slider(width/2-150,height/8*7+15,300,20,0); //Canvas Size size(800, 600, P2D); //Camera Settings myMovie = new Capture(this, width/blockSize, height/blockSize); numPixels = width / blockSize; myMovieColors = new color[numPixels * numPixels]; //Button Coord's brx = width/2-240; bry = height/8*7+5; cbx = width/2+215; cby = height/8*7+25; } //Read Pixels void captureEvent(Capture c) { c.read(); c.loadPixels(); for (int j = 0; j < numPixels; j++) { for (int i = 0; i < numPixels; i++) { myMovieColors[j*numPixels + i] = c.get(i, j); } } } //DRAW void draw() { bsize = sliderR.pos() * 20+10; blockSize = (int)bsize; background(0); //Pixelforms pushMatrix(); translate(-sliderR.pos()*width,-sliderR.pos()*height); for (int j = 0; j < numPixels; j++) { for (int i = 0; i < numPixels; i++) { fill(myMovieColors[j*numPixels + i]); noStroke(); if (form == 1) rect(i*blockSize, j*blockSize, blockSize-1, blockSize-1); else if (form == 2) ellipse(i*blockSize, j*blockSize, blockSize, blockSize); else if (form == 3) triangle(i*blockSize, j*blockSize+blockSize,i*blockSize+blockSize/2, j*blockSize,i*blockSize+blockSize, j*blockSize+blockSize); else if (form == 4) triangle(i*blockSize, j*blockSize,i*blockSize+blockSize, j*blockSize,i*blockSize, j*blockSize+blockSize); else if (form ==5) { beginShape(); vertex(i*blockSize+blockSize/2, j*blockSize); vertex(i*blockSize+blockSize, j*blockSize+blockSize/2); vertex(i*blockSize+blockSize/2, j*blockSize+blockSize); vertex(i*blockSize, j*blockSize+blockSize/2); endShape(); } else if (form ==6) { beginShape(); vertex(i*blockSize+blockSize/4, j*blockSize); vertex(i*blockSize+blockSize/4*3, j*blockSize); vertex(i*blockSize+blockSize, j*blockSize+blockSize/4); vertex(i*blockSize+blockSize, j*blockSize+blockSize/4*3); vertex(i*blockSize+blockSize/4*3, j*blockSize+blockSize); vertex(i*blockSize+blockSize/4, j*blockSize+blockSize); vertex(i*blockSize, j*blockSize+blockSize/4*3); vertex(i*blockSize, j*blockSize+blockSize/4); endShape(); } } } popMatrix(); //AUSLÖSER if(ausloeser >=1) { pushStyle(); fill(0,80); rect (0,0,width,height); popStyle(); ausloeser=0; } //GUI image(leathercam,0,0,width,height); sliderR.draw(); image(photobutton,brx,bry,40,40); pushMatrix(); translate(cbx,cby); imageMode(CENTER); image(changebutton,0,0,50,50); if(form ==1) rotate(radians(0)); else if(form ==2) rotate(radians(-45)); else if(form ==3) rotate(radians(-90)); else if(form ==4) rotate(radians(-135)); else if(form ==5) rotate(radians(-180)); else if(form ==6) rotate(radians(-225)); image(innerchangebutton,0,0,40,40); imageMode(CORNER); popMatrix(); pushStyle(); stroke(200); strokeWeight(2); noFill(); popStyle(); } void mousePressed() { //CAPTURE SCREEN if (mouseX > brx && mouseX < brx+40 && mouseY < bry+40 && mouseY > bry) { nb_images++; PImage pg = get(12, 8, width-24, height/6*5-8); pg.save("pcam_picture_" + nb_images + ".png"); ausloeser=1; } //CHANGE FORM if (mouseX > cbx-20 && mouseX < cbx+20 && mouseY < cby+20 && mouseY > cby-20) { if ( form < 6) form = form+1; else if (form ==6) form = 1; } //DOUBLE CLICK if(i==0){ m = millis(); } if(mouseButton==LEFT){ i++; if(i==2) n = millis(); } sliderR.mousePos(mouseX,mouseY,true); } void mouseDragged() { sliderR.mousePos(mouseX,mouseY,true); } void mouseReleased(){ if(i==2 && n-m < 300){ println("Zoom Reset"); sliderR._pos = 0; i=0; }else if(i>1){ i=0; } }