{"id":534,"date":"2024-12-10T09:52:24","date_gmt":"2024-12-10T08:52:24","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=534"},"modified":"2025-01-03T09:58:25","modified_gmt":"2025-01-03T08:58:25","slug":"erzeugung-von-1d-barcode-bildern-mit-der-zxing-library","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=534","title":{"rendered":"Erzeugung von 1D-Barcode-Bildern mit der zxing-Library"},"content":{"rendered":"\n<p>Barcodes sind ein unverzichtbarer Bestandteil moderner Logistik, des Einzelhandels und vieler anderer Branchen. Die Open-Source-Library zxing (&#8222;Zebra Crossing&#8220;) ist eine der beliebtesten Bibliotheken zur Verarbeitung und Erzeugung von Barcodes. In diesem Artikel werden wir detailliert die Erzeugung von 1D-Barcode-Bildern mit der zxing-Library aufzeigen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Grundlagen von 1D- und 2D-Barcodes<\/h4>\n\n\n\n<p><strong>1D-Barcodes<\/strong>, auch eindimensionale Barcodes genannt, bestehen aus einer Abfolge von Linien und Zwischenr\u00e4umen unterschiedlicher Breite. Sie codieren Informationen in horizontaler Richtung und sind weit verbreitet in Anwendungen wie dem Einzelhandel (z. B. EAN-13) oder der Logistik (z. B. Code128). 1D-Barcodes haben jedoch eine begrenzte Kapazit\u00e4t, da sie nur eine begrenzte Menge an Daten speichern k\u00f6nnen.<\/p>\n\n\n\n<p><strong>2D-Barcodes<\/strong> hingegen codieren Informationen in zwei Dimensionen \u2013 horizontal und vertikal. Dadurch k\u00f6nnen sie erheblich mehr Daten auf kleinerem Raum speichern. Beispiele f\u00fcr 2D-Barcodes sind QR-Codes und Data Matrix. Diese Barcodes k\u00f6nnen alphanumerische Zeichen, Bin\u00e4rdaten und sogar Bilder speichern und sind daher vielseitiger als 1D-Barcodes.<\/p>\n\n\n\n<p><strong>Vergleich von 1D- und 2D-Barcodes:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Merkmal<\/th><th>1D-Barcodes<\/th><th>2D-Barcodes<\/th><\/tr><\/thead><tbody><tr><td>Datenkapazit\u00e4t<\/td><td>Begrenzt (typisch bis 20 Zeichen)<\/td><td>Hoch (Hunderte bis Tausende Zeichen)<\/td><\/tr><tr><td>Platzbedarf<\/td><td>Ben\u00f6tigt mehr Platz bei mehr Daten<\/td><td>Kompakt, speichert mehr Daten auf kleinem Raum<\/td><\/tr><tr><td>Fehlerkorrektur<\/td><td>Keine<\/td><td>Eingebaute Fehlerkorrektur<\/td><\/tr><tr><td>Typische Anwendungen<\/td><td>Einzelhandel, Logistik<\/td><td>Marketing, mobile Anwendungen, digitale Inhalte<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Aufgrund ihrer Einfachheit und Kosteneffizienz bleiben 1D-Barcodes die bevorzugte Wahl f\u00fcr Anwendungen mit geringer Datenanforderung. 2D-Barcodes werden hingegen oft eingesetzt, wenn umfangreichere Daten oder Funktionen ben\u00f6tigt werden.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Voraussetzungen<\/h4>\n\n\n\n<p>Um mit der zxing-Library zu arbeiten, sind folgende Voraussetzungen zu erf\u00fcllen:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Java-Entwicklungsumgebung<\/strong>: Stellen Sie sicher, dass JDK installiert ist und die Entwicklungsumgebung wie IntelliJ IDEA oder Eclipse eingerichtet ist.<\/li>\n\n\n\n<li><strong>zxing-Bibliothek<\/strong>: Die Bibliothek kann \u00fcber Maven eingebunden werden:<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>com.google.zxing<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>core<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version<\/span>&gt;<\/span>3.5.0<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">version<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>com.google.zxing<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>javase<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version<\/span>&gt;<\/span>3.5.0<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">version<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">Schritt 1: Aufbau eines einfachen Projekts<\/h4>\n\n\n\n<p>Starten Sie ein neues Java-Projekt und f\u00fcgen Sie die oben genannten Abh\u00e4ngigkeiten in die <code>pom.xml<\/code> ein. Stellen Sie sicher, dass Ihr Projekt korrekt kompiliert.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Schritt 2: Erstellung eines Barcodes<\/h4>\n\n\n\n<p>Die zxing-Library bietet die Klasse <code>BarcodeWriter<\/code>, mit der Sie Barcode-Bilder erstellen k\u00f6nnen. Hier ist ein Beispielcode, um einen einfachen Code128-Barcode zu erzeugen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> com.google.zxing.BarcodeFormat;\n<span class=\"hljs-keyword\">import<\/span> com.google.zxing.Writer;\n<span class=\"hljs-keyword\">import<\/span> com.google.zxing.WriterException;\n<span class=\"hljs-keyword\">import<\/span> com.google.zxing.common.BitMatrix;\n<span class=\"hljs-keyword\">import<\/span> com.google.zxing.client.j2se.MatrixToImageWriter;\n\n<span class=\"hljs-keyword\">import<\/span> java.io.IOException;\n<span class=\"hljs-keyword\">import<\/span> java.nio.file.FileSystems;\n<span class=\"hljs-keyword\">import<\/span> java.nio.file.Path;\n\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">BarcodeGenerator<\/span> <\/span>{\n\n    public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> main(<span class=\"hljs-built_in\">String<\/span>&#91;] args) {\n        <span class=\"hljs-built_in\">String<\/span> text = <span class=\"hljs-string\">\"1234567890\"<\/span>;  <span class=\"hljs-comment\">\/\/ Der Inhalt des Barcodes<\/span>\n        <span class=\"hljs-built_in\">String<\/span> filePath = <span class=\"hljs-string\">\"barcode.png\"<\/span>;\n        int width = <span class=\"hljs-number\">300<\/span>;\n        int height = <span class=\"hljs-number\">100<\/span>;\n\n        <span class=\"hljs-keyword\">try<\/span> {\n            generateBarcodeImage(text, filePath, width, height);\n            System.out.println(<span class=\"hljs-string\">\"Barcode wurde erfolgreich erstellt: \"<\/span> + filePath);\n        } <span class=\"hljs-keyword\">catch<\/span> (WriterException | IOException e) {\n            System.err.println(<span class=\"hljs-string\">\"Fehler bei der Barcode-Erstellung: \"<\/span> + e.getMessage());\n        }\n    }\n\n    private <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> generateBarcodeImage(<span class=\"hljs-built_in\">String<\/span> text, <span class=\"hljs-built_in\">String<\/span> filePath, int width, int height) throws WriterException, IOException {\n        Writer barcodeWriter = <span class=\"hljs-keyword\">new<\/span> com.google.zxing.oned.Code128Writer();\n        BitMatrix bitMatrix = barcodeWriter.encode(text, BarcodeFormat.CODE_128, width, height);\n\n        Path path = FileSystems.getDefault().getPath(filePath);\n        MatrixToImageWriter.writeToPath(bitMatrix, <span class=\"hljs-string\">\"PNG\"<\/span>, path);\n    }\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">Code-Erkl\u00e4rung<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>BarcodeWriter-Implementierung<\/strong>: Die Klasse <code>Code128Writer<\/code> ist eine der vielen Implementierungen des <code>Writer<\/code>-Interfaces. Sie wird verwendet, um einen Code128-Barcode zu erstellen.<\/li>\n\n\n\n<li><strong>BitMatrix<\/strong>: Diese Klasse repr\u00e4sentiert die Matrix, die die Informationen des Barcodes enth\u00e4lt.<\/li>\n\n\n\n<li><strong>MatrixToImageWriter<\/strong>: Diese Klasse dient zur Umwandlung der BitMatrix in ein Bild (z. B. PNG oder JPEG).<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Schritt 3: Anpassung der Barcodes<\/h4>\n\n\n\n<p>Falls Sie andere Barcode-Typen erzeugen m\u00f6chten, k\u00f6nnen Sie die Klasse entsprechend anpassen. Hier sind einige g\u00e4ngige Barcode-Formate, die von zxing unterst\u00fctzt werden:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>EAN_8<\/strong>: Geeignet f\u00fcr kurze numerische Codes (8 Ziffern).<\/li>\n\n\n\n<li><strong>EAN_13<\/strong>: Wird h\u00e4ufig im Einzelhandel verwendet (13 Ziffern).<\/li>\n\n\n\n<li><strong>UPC_A<\/strong>: Standardformat in den USA (12 Ziffern).<\/li>\n\n\n\n<li><strong>CODE_39<\/strong>: Eignet sich f\u00fcr alphanumerische Inhalte.<\/li>\n<\/ul>\n\n\n\n<p>Beispiel f\u00fcr EAN-13:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">BitMatrix bitMatrix = barcodeWriter.encode(<span class=\"hljs-string\">\"4006381333931\"<\/span>, BarcodeFormat.EAN_13, width, height);\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h4 class=\"wp-block-heading\">Schritt 4: Erweiterte Optionen<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Farbe und Gr\u00f6\u00dfe anpassen<\/strong>: Die <code>MatrixToImageConfig<\/code>-Klasse erlaubt es, die Farben des Barcodes zu \u00e4ndern:<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">MatrixToImageConfig config = <span class=\"hljs-keyword\">new<\/span> MatrixToImageConfig(<span class=\"hljs-number\">0xFF000000<\/span>, <span class=\"hljs-number\">0xFFFFFFFF<\/span>); <span class=\"hljs-comment\">\/\/ Schwarz auf Wei\u00df<\/span>\nMatrixToImageWriter.writeToPath(bitMatrix, <span class=\"hljs-string\">\"PNG\"<\/span>, path, config);\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>Integrierter Text<\/strong>: Bei manchen Barcodes ist es \u00fcblich, den Text direkt darunter anzuzeigen. zxing bietet keine direkte Unterst\u00fctzung, aber Sie k\u00f6nnen den Text mit einer Grafikbibliothek wie <code>java.awt.Graphics2D<\/code> hinzuf\u00fcgen.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">H\u00e4ufige Fehler und deren Behebung<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Ung\u00fcltige Eingabedaten<\/strong>: Stellen Sie sicher, dass die Eingabedaten dem Format des gew\u00e4hlten Barcodetyps entsprechen. Zum Beispiel darf ein EAN-13-Code nur aus 13 Ziffern bestehen.<\/li>\n\n\n\n<li><strong>Dateispeicherung<\/strong>: Vergewissern Sie sich, dass der angegebene Pfad schreibbar ist.<\/li>\n\n\n\n<li><strong>Kompatibilit\u00e4tsprobleme<\/strong>: Falls Sie zxing mit einer \u00e4lteren Java-Version verwenden, sollten Sie sicherstellen, dass alle Abh\u00e4ngigkeiten korrekt sind.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">Fazit<\/h4>\n\n\n\n<p>Die zxing-Library ist eine leistungsstarke und flexible L\u00f6sung zur Erstellung von 1D-Barcodes. Mit nur wenigen Codezeilen k\u00f6nnen Sie Barcodes erstellen, die in einer Vielzahl von Anwendungen verwendet werden k\u00f6nnen. Durch ihre Open-Source-Natur ist sie leicht anpassbar und erweiterbar. Probieren Sie es selbst aus und integrieren Sie Barcodes nahtlos in Ihre Projekte!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Barcodes sind ein unverzichtbarer Bestandteil moderner Logistik, des Einzelhandels und vieler anderer Branchen. Die Open-Source-Library zxing (&#8222;Zebra Crossing&#8220;) ist eine der beliebtesten Bibliotheken zur Verarbeitung und Erzeugung von Barcodes. In diesem Artikel werden wir detailliert die Erzeugung von 1D-Barcode-Bildern mit der zxing-Library aufzeigen. Grundlagen von 1D- und 2D-Barcodes 1D-Barcodes, auch eindimensionale Barcodes genannt, bestehen aus [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-534","post","type-post","status-publish","format-standard","hentry","category-plain_java"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/534","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=534"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/534\/revisions"}],"predecessor-version":[{"id":535,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/534\/revisions\/535"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=534"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=534"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}