Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

PixelCam

28. Oktober 2011

A simple camera application with zoom and different shapes called PCam. Download it as OSX application: Download
Code:
<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;
  }
}