2.7 QR-codes lezen
Voorbeeld 1:
PImage online; void setup() {
String url ="http://www.schoolvoorbeeld.be/qr/qrgen.php?data=kris merckx";
online = loadImage(url, "png");
noLoop();
size(500,500);
}
void draw() {
image(online, 0, 0);
}
Voorbeeld 2:
import processing.video.*;
import pqrcode.*;
Capture video;
String statusMsg = "Klik op de spatiebalk om een QR-code te scannen";
Decoder decoder;
void setup() {
size(400, 320);
video = new Capture(this, width, height-20, 30);
decoder = new Decoder(this);
PFont myFont = createFont(PFont.list()[2], 14);
textFont(myFont);
}
void decoderEvent(Decoder decoder) {
statusMsg = decoder.getDecodedString();
}
void captureEvent(Capture video) {
video.read();
}
void draw() {
background(0);
image(video, 0, 0);
text(statusMsg, 10, height-4);
if (decoder.decoding()) {
PImage show = decoder.getImage();
image(show,0,0,show.width/4,show.height/4);
statusMsg = "Decoding image";
for (int i = 0; i < (frameCount/2) % 10; i++) statusMsg += ".";
}
}
void keyReleased() {
String code = "";
PImage savedFrame = createImage(video.width,video.height,RGB);
savedFrame.copy(video, 0,0,video.width,video.height,0,0,video.width,video.height);
savedFrame.updatePixels();
saveFrame("QRtest###.png");
decoder.decodeImage(savedFrame);
}
2.8 Processing.js in webpagina's
(function(processing, $constants) {
function setup() {
processing.size(400, 400);
processing.background(0);
processing.stroke(255);
processing.ellipse(200, 200, 300, 300);
} processing.setup = setup; })
2.9 Externe data inlezen
Foto's laden
PImage MijnFoto;
void setup() {
MijnFoto = loadImage("foto.jpg");
noLoop();
}
void draw() {
image(MijnFoto, 0, 0);
}
Een afbeelding van een webserver inlezen
PImage onlineFoto;
void setup() {
String url = "http://www.computerkit.be/ar/foto.jpg";
onlineFoto = loadImage(url, "png");
noLoop();
}
void draw() {
image(onlineFoto, 0, 0);
}
Vectorafbeelding
PShape tekening;
void setup() {
size(1000, 800);
tekening = loadShape("tekening.svg");
smooth();
noLoop();
}
void draw() {
background(0);
shape(tekening, 10, 10, 800, 600);
}
Gestructureerde gegevens
Voorbeeld 1:
Joske Janssens
Pietluttigenlaan 22
Zilverbeke 2560
joske.janssens@pmail.com
Lut Lippens
Eikelstraat 34
Ganzegem 3260
lut.lippens@spotmail.com
Voorbeeld 2:
Mona Lisa
Girl with the pearl earring
Voorbeeld 3:
XMLElement xml;
void setup() {
size(200, 200);
xml = new XMLElement(this, "artworks.xml");
int numArtworks = xml.getChildCount();
for (int i = 0; i < numArtworks; i++) {
XMLElement artwork = xml.getChild(i);
int id = artwork.getInt("id");
String dataUrl = artwork.getString("dataUrl");
String imageUrl = artwork.getString("imageUrl");
String awTitle = artwork.getContent();
println(id + " : " + dataUrl + " " + imageUrl + " : " + awTitle);
}
}
Voorbeeld 4:
XMLElement xml;
int i=0;
int numArtworks= 0;
void setup() {
size(200, 200);
}
void draw(){
xml = new XMLElement(this, "artworks.xml");
numArtworks = xml.getChildCount();
XMLElement artwork = xml.getChild(i);
int id = artwork.getInt("id");
String dataUrl = artwork.getString("dataUrl");
String imageUrl = artwork.getString("imageUrl");
String awTitle = artwork.getContent();
println(id + " : " + dataUrl + " " + imageUrl + " : " + awTitle);
}
void keyPressed(){
i++;
if(i>numArtworks-1){
i=0;
}
}
Video
import processing.video.*;
Movie gebouw1900;
void setup() {
size(1200, 800);
gebouw1900 = new Movie(this, "gebouw1900.mov");
gebouw1900.loop();
}
void draw() {
tint(255, 20);
image(gebouw1900, mouseX, mouseY);
}
void movieEvent(Movie m) {
m.read();
}
2.10 Processingprogramma's met elkaar laten praten
Een server opzetten
import processing.net.*;
Server mijnServer;
int val = 0;
void setup() {
size(200, 200);
mijnServer = new Server(this, 5204);
}
void draw() {
val = (mouseX, mouseY, mouseX);
background(val);
mijnServer.write(val);
}
Een client-toepassing
import processing.net.*;
Client mijnClient;
int dataIn;
void setup() {
size(200, 200);
mijnClient = new Client(this, "127.0.0.1", 5204);
}
void draw() {
if (mijnClient .available() > 0) {
dataIn = mijnClient.read();
background(dataIn);
}
}
2.11 Interface-elementen toevoegen
Voorbeeld 1:
void draw() {
rect(20, 20, 60, 60);
}
void mousePressed() {
link("http://www.schoolvoorbeeld.be", "_new");
}
Voorbeeld 2:
void btn(int btnX, int btnY, int btnW, int btnH, String btnT){
rect(btnX, btnY, btnW, btnH);
fill(0,0,0);
textSize(16);
text(btnT, btnX+20, btnY+20);
fill(255,255,255);
}
Voorbeeld 3:
boolean overBtn(int x, int y, int width, int height) {
if (mouseX >= x && mouseX <= x+width &&
mouseY >= y && mouseY <= y+height) {
return true;
} else {
return false;
}
}
Voorbeeld 4:
btn(10, 10, 100, 50, "Home");
overBtnTest= overBtn(10, 10, 100, 50);
btn(10, 200, 100, 50, "Contact");
overBtnTest2= overBtn(10, 200, 100, 50);
Voorbeeld 5:
boolean overBtnTest = false;
boolean overBtnTest2 = false;
void setup(){
size(400, 400);
}
void draw(){
btn(10, 10, 100, 50, "Home");
overBtnTest= overBtn(10, 10, 100, 50);
btn(10, 200, 100, 50, "Contact");
overBtnTest2= overBtn(10, 200, 100, 50);
}
void btn(int btnX, int btnY, int btnW, int btnH, String btnT){
rect(btnX, btnY, btnW, btnH);
fill(0,0,0);
textSize(16);
text(btnT, btnX+20, btnY+20);
fill(255,255,255);
}
boolean overBtn(int x, int y, int width, int height) {
if (mouseX >= x && mouseX <= x+width &&
mouseY >= y && mouseY <= y+height) {
return true;
} else {
return false;
}
}
void mousePressed() {
if (overBtnTest2) {
println("Tweede knop geraakt.");
}
if (overBtnTest) {
println("Eerste knop geraakt.");
}
}
2.12 Een user interface met G4P
Voorbeeld 1:
// Need G4P library
import g4p_controls.*;
void setup(){
size(480, 320);
createGUI();
customGUI();
// Place your setup code here
}
Voorbeeld 2:
void btnStartClick(GButton source, GEvent event) { //_CODE_:btnStart:770719:
println("button1 - GButton event occured " + System.currentTimeMillis()%10000000 );
}
Voorbeeld 3:
void btnStartClick(GButton source, GEvent event) {
println("GEKLIKT");
}
2.13 Je interactieve animaties bewaren als een PDF
import processing.pdf.*;
void setup() {
size(400, 400);
beginRecord(PDF, "alles.pdf");
}
void draw() {
strokeWeight(10);
stroke(mouseX, mouseY, mouseX-mouseY);
line(mouseX, mouseY, width/2, height/2);
}
void keyPressed() {
if (key == 's') {
endRecord();
exit();
}
}