Free Art and Technology Lab (F.A.T.) için processing üzerinde Golan Levin ve Asa Foster III tarafından geliştirilmiş olan bir araç takımı. Takım içerisinde yer alan class’lar farklı yapıları bir araya getirerek, qr_stenciler ile QR kod olarak elinizde bulunan imajları stencil kalıplarına dönüştürebilirsiniz.

Qrst 5

İmajlar ihtiyacınıza uygun olarak köşelerini yumuşatılmış (rounded corner) ve siyah üzerine beyaz ya da beyaz üzerine siyah vb. olacak şekilde *.pdf çıktılar halinde derleniyor.

Cp5 Controllers

controlP5

Github üzerinden geliştirmelerde de bulunabileceğiniz uygulama Processing 1.5.1 sürümünde sorunsuz çalışıyor. Uygulamayı çalıştırmadan önce Andreas Schlegel tarafından geliştirilen arayüz kütüphanesi controlP5‘nin yüklü olduğundan emin olmalısınız. QR_STENCILER/data/ içerisine yerleştireceğiniz qr imajlarınızı Google tarafından ücretsiz olarak sunulan goo.gl servisi (sadece linkler için), yine ücretsiz bir servis olan goqr.me veya ücretli olarak kaywa üzerinden sağlayabilirsiniz.

E-Posta Bültenine Kayıt Olmak İster misin?

E-posta listesine katılarak yeni yazılardan haberdar olabilirsin.

Diğer Uygulamalar

Free Art and Technology Lab tarafından gerçekleştirilen diğer çalışmalardan biri olan ve QR_STENCILER içerisinde de yer alan QR_HOBO_CODES da ayrıca ilginizi çekecektir. Hobo’lar ve kodları ile ilgili detaylı bilgi almak için wikipedia: hobo bağlantısını inceleyebilirsiniz.

QrcodeEk olarak, processing qr kod kütüphanesini kullanarak işlemler gerçekleştirmeniz de mümkün. Örnek olarak aşağıda metin olarak hazırlanmış bir qr kod üzerinden imaj gösterebileceğimiz bir sketch yer almakta. Codebox: Use QR codes in Processing başlığı altında makezine tarafından paylaşılan çalışma için ihtiyacınız olan tüm bağlantıları aşağıda iletiyorum. Dökümanın orjinal kaynağı olan Codebox: Use QR codes in Processing başlıklı yazını incelemeyi unutmayın.

  1. ZXing
    ZXing (“zebra crossing”) açık kaynaklı, çoklu format 1D/2D barkod işleme kütüphanesi.
  2. Derleme işlemi ile uğraşmamak adına hazır olan javase.jar ve core.jar dosyalarını bilgisayarınıza indirip, Processing > Sketch > Add File ile eklemelisiniz. (Teşekkürler odewahn)
  3. Ve üzerinde çalışacağımız sketch olan qr_codes.pde

QR Scanning

Döküman içerisinde yer alan sketch üzerine bir kaç düzenleme yapmam gerekti. Özellikle setup içerisinde webcam aktifleştirilmediği için muhtemelen sadece canvas görüntüleyeceksiniz. Diğer düzenleme ise getImage() ile ilgili alacağınız uyarıya istinaden getNative() kullanmış olmam.

import processing.video.*;
import com.google.zxing.*;
import java.awt.image.BufferedImage;
 
Capture cam; //Set up the camera
com.google.zxing.Reader reader = new com.google.zxing.qrcode.QRCodeReader();
 
int WIDTH = 640;
int HEIGHT = 480;
 
PImage cover;  //This will have the cover image
String lastISBNAcquired = "";  //This is the last ISBN we acquired
 
// Grabs the image file    
 
void setup() {
  size(640, 480);
  cam = new Capture(this, WIDTH, HEIGHT);
  cam.start();
}
 
 
void draw() {
  if (cam.available() == true) {
    cam.read();    
    image(cam, 0,0);
    try {
       // Now test to see if it has a QR code embedded in it
       LuminanceSource source = new BufferedImageLuminanceSource((BufferedImage)cam.getNative()); // getImage()
       BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));       
       Result result = reader.decode(bitmap); 
       //Once we get the results, we can do some display
       if (result.getText() != null) { 
          println(result.getText());
          ResultPoint[] points = result.getResultPoints();
          //Draw some ellipses on at the control points
          for (int i = 0; i < points.length; i++) {
            fill(#ff8c00);
            ellipse(points[i].getX(), points[i].getY(), 20,20);
          }
          //Now fetch the book cover, if it is found
          if (!result.getText().equals(lastISBNAcquired)) { // 9780596510510
             String url = result.getText();
             try {
                cover = loadImage(url,"gif");
                lastISBNAcquired = result.getText();
             } catch (Exception e) {
               cover = null;
             }
          }
          //Superimpose the cover on the image
          if (cover != null) {
            image(cover, points[1].getX(), points[1].getY());
          }
       }
    } catch (Exception e) {
//         println(e.toString()); 
    }
  }
}

Leave a Reply