Wer als Benutzer von Processing oder Processing.js vor allem an einer künstlerischen Verfremdung von QR-Codes interessiert ist, hat verschiedene Möglichkeiten, das Muster eines QR-Codes in eine "Sketch" zu laden.
Möglichkeiten für Processing:
Möglichkeiten für Processing.js:
Da sich diese Seite vor allem an Processing-Anfänger richtet, werden hier nur die beiden erstgenannten Methoden vorgestellt.
Eine Anleitung erklärt Ihnen die Bedienung der Seiten in diesem Web-Auftritt, in den Einstellungen können Sie deren Verhalten anpassen.
| Text: | |
| ECC Level: | |
| QR Code: | |
| Array Literal: | |
| JSON Output: | |
Am Beispiel einer kleinen "Sketch", die das QR-Code-Muster einfach nur unverfälscht anzeigt, soll gezeigt werden, wie man das Muster als Array-Literal einsetzt:
int[][] ModuleArray = new int[][] {
  insert your array literal here
};
final int ScreenSize     = 512;                  // width and height of screen
final int minBorderWidth = 40;           // min width of border around QR code
void setup () {
  size(512,512); // ScreenSize,ScreenSize
  background(255);
  fill(0);
  int QRCodeSize = ModuleArray.length;
  int ModuleSize = max(1,floor((ScreenSize-2*minBorderWidth)/QRCodeSize));
  int xOffset = floor((ScreenSize-QRCodeSize*ModuleSize)/2);
  int yOffset = xOffset;
  for (int y = 0; y < QRCodeSize; y++) {
    for (int x = 0; x < QRCodeSize; x++) {
      if (ModuleArray[y][x] > 0) {
        rect(xOffset+x*ModuleSize,yOffset+y*ModuleSize, ModuleSize,ModuleSize);
      }
    }
  }
  noLoop();
}Das Lesen eines Musters aus einer JSON-Datei ist ein wenig aufwändiger - außerdem muss die Datei "QR-Code.json" im selben Verzeichnis liegen, in dem auch die Sketch selber gespeichert wurde.
Das folgende Beispiel gibt das QR-Code-Muster einfach nur unverfälscht aus:
final int ScreenSize     = 512;                  // width and height of screen
final int minBorderWidth = 40;           // min width of border around QR code
int[][] ModuleArray;
int[][] loadedQRCodePattern () {
  JSONArray ModuleArray = loadJSONArray("QR-Code.json");
  int       RowCount    = ModuleArray.size();
  int[][] Result = new int[RowCount][];
    for (int y = 0; y < RowCount; y++) {
      Result[y] = ModuleArray.getJSONArray(y).getIntArray();
    }
  return Result;
}
void setup () {
  size(512,512); // ScreenSize,ScreenSize
  background(255);
  fill(0);
  ModuleArray = loadedQRCodePattern();
  int QRCodeSize = ModuleArray.length;
  int ModuleSize = max(1,floor((ScreenSize-2*minBorderWidth)/QRCodeSize));
  int xOffset = floor((ScreenSize-QRCodeSize*ModuleSize)/2);
  int yOffset = xOffset;
  for (int y = 0; y < QRCodeSize; y++) {
    for (int x = 0; x < QRCodeSize; x++) {
      if (ModuleArray[y][x] > 0) {
        rect(xOffset+x*ModuleSize,yOffset+y*ModuleSize, ModuleSize,ModuleSize);
      }
    }
  }
  noLoop();
}Diese Web-Seite verwendet die folgenden Drittanbieter-Bibliotheken oder -Materialien bzw. StackOverflow-Antworten:
Der Autor dankt den Entwicklern und Autoren der genannten Beiträge für ihre Mühe und die Bereitschaft, ihre Werke der Allgemeinheit zur Verfügung zu stellen.