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.