Barcodes sind ein integraler Bestandteil moderner Datenerfassung und -verarbeitung. Während eindimensionale (1D) Barcodes wie der klassische EAN-13 oder Code128 bereits seit Jahrzehnten eingesetzt werden, um beispielsweise Artikelnummern im Handel abzubilden, bieten zweidimensionale (2D) Barcodes weitreichendere Möglichkeiten.
Unterschiede zwischen 1D- und 2D-Barcodes
1D-Barcodes bestehen aus einer Abfolge von Linien und Zwischenräumen mit unterschiedlicher Breite. Sie speichern Daten linear und in begrenztem Umfang – typischerweise wenige Dutzend Zeichen. Der Scan erfolgt über einen Zeilenleser, der die Struktur der Linien auswertet. 2D-Barcodes hingegen nutzen eine Matrix aus Punkten oder Quadraten zur Datenspeicherung, wodurch sie wesentlich mehr Informationen auf gleicher Fläche unterbringen können. Bekannte Formate sind QR-Codes, DataMatrix und Aztec-Codes. Sie können neben alphanumerischen Zeichen auch Binärdaten wie URLs, Bilder oder verschlüsselte Nachrichten speichern. Der Scan erfolgt in der Regel über Kamerasysteme, die die komplette Matrix erfassen und interpretieren.
Vorteile von 2D-Barcodes
Höhere Speicherkapazität ist ein wesentliches Merkmal von 2D-Barcodes, da tausende von Zeichen möglich sind. Fehlerkorrektur ist ein weiterer Vorteil, da der Code selbst bei Beschädigungen oft lesbar bleibt. Außerdem können verschiedene Datentypen flexibel kodiert werden.
Anwendungsszenarien
2D-Barcodes finden sich in einer Vielzahl von Anwendungsfällen. Im Bereich Mobile Payment werden QR-Codes häufig zur Zahlungsabwicklung genutzt. In der Logistik enthalten DataMatrix-Codes detaillierte Produktinformationen. Im Marketing verbinden QR-Codes physische Medien mit digitalen Inhalten.
Die zxing-Library
Die zxing („Zebra Crossing“)-Library ist eine populäre Open-Source-Bibliothek zur Erstellung und Auswertung von Barcodes. Ursprünglich für Java entwickelt, bietet sie Bindings für viele andere Programmiersprachen und Frameworks.
Vorteile der zxing-Library
Die Library unterstützt mehrere Barcode-Typen und kann sowohl 1D- als auch 2D-Barcodes erstellen und lesen. Der Einstieg ist einfach, da mit wenigen Zeilen Code Barcodes generiert oder gescannt werden können. Zxing bietet Flexibilität und ist sowohl in Desktop-, Web- als auch mobilen Anwendungen einsetzbar. Als Open-Source-Library ist sie kostenfrei und anpassbar an individuelle Anforderungen.
Erstellung von 2D-Barcodes mit zxing
Einbindung der Bibliothek
Zunächst muss die zxing-Library in das Projekt integriert werden. In Java erfolgt dies üblicherweise durch das Hinzufügen der entsprechenden Abhängigkeit in der pom.xml
(Maven) oder build.gradle
(Gradle):
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.5.0</version>
</dependency>
Code-Sprache: HTML, XML (xml)
Code zur Erstellung eines QR-Codes
Hier ein Beispiel zur Generierung eines QR-Codes in Java:
import com.google.zxing.BarcodeFormat;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
public class QRCodeGenerator {
public static void main(String[] args) {
String data = "https://www.example.com"; // Die zu kodierenden Daten
String filePath = "qrcode.png"; // Speicherort der Bilddatei
int size = 300; // Breite und Höhe des QR-Codes
try {
QRCodeWriter qrCodeWriter = new QRCodeWriter();
BitMatrix bitMatrix = qrCodeWriter.encode(data, BarcodeFormat.QR_CODE, size, size);
Path path = FileSystems.getDefault().getPath(filePath);
MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
System.out.println("QR-Code erfolgreich erstellt: " + filePath);
} catch (WriterException | IOException e) {
e.printStackTrace();
}
}
}
Code-Sprache: JavaScript (javascript)
Dieser Code erzeugt einen QR-Code, der eine URL enthält und speichert ihn als PNG-Bild.
Anpassungen und Erweiterungen
Die zxing-Library bietet zahlreiche Optionen, um Barcodes an spezifische Anforderungen anzupassen. Farbanpassungen können vorgenommen werden, um das Farbschema des Codes zu modifizieren. QR-Codes bieten verschiedene Level der Fehlerkorrektur (L, M, Q, H), die je nach Anwendungsfall angepasst werden können.
Beispiel für die Anpassung der Fehlerkorrektur:
import com.google.zxing.EncodeHintType;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import java.util.HashMap;
import java.util.Map;
Map<EncodeHintType, Object> hints = new HashMap<>();
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
BitMatrix bitMatrix = qrCodeWriter.encode(data, BarcodeFormat.QR_CODE, size, size, hints);
Code-Sprache: JavaScript (javascript)
Fazit
2D-Barcodes sind leistungsfähige Werkzeuge zur Datenspeicherung und -verteilung. Mit der zxing-Library können Entwickler einfach und effizient QR-Codes sowie andere Barcodetypen generieren und verarbeiten. Die breite Unterstützung verschiedener Plattformen und die Flexibilität machen zxing zu einer idealen Wahl für zahlreiche Anwendungen. Ob zur Zahlungsabwicklung, in der Logistik oder im Marketing – die Einsatzmöglichkeiten sind nahezu unbegrenzt.