{"id":538,"date":"2024-12-13T10:05:11","date_gmt":"2024-12-13T09:05:11","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=538"},"modified":"2025-01-03T10:08:52","modified_gmt":"2025-01-03T09:08:52","slug":"barcodes-in-java-dekodieren-mit-der-zxing-library","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=538","title":{"rendered":"Barcodes in Java dekodieren mit der zxing-Library"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Einleitung<\/h3>\n\n\n\n<p>Barcodes sind allgegenw\u00e4rtig und finden in vielen Bereichen wie Logistik, Einzelhandel und Gesundheitswesen Anwendung. Das Parsen von Barcodes aus Bildern ist eine g\u00e4ngige Aufgabe in der Softwareentwicklung, und Java bietet mit der zxing-Library eine leistungsstarke Open-Source-L\u00f6sung f\u00fcr diese Herausforderung. Dieser Artikel beschreibt detailliert, wie man Barcodes aus einem Bild in Java mit der zxing-Library liest und interpretiert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Was ist zxing?<\/h3>\n\n\n\n<p>ZXing (ausgesprochen \u201eZebra Crossing\u201c) ist eine Open-Source-Bibliothek, die von Google entwickelt wurde. Sie unterst\u00fctzt das Parsen verschiedener Barcode-Typen wie QR-Codes, UPC, EAN, Code 128 und viele weitere. Die Bibliothek ist leichtgewichtig, gut dokumentiert und in Java geschrieben, was sie ideal f\u00fcr Java-Entwickler macht.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Voraussetzungen<\/h3>\n\n\n\n<p>Um mit dem Parsen von Barcodes in Java zu beginnen, ben\u00f6tigen Sie:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Java Development Kit (JDK)<\/strong>: Stellen Sie sicher, dass Sie JDK 8 oder h\u00f6her installiert haben.<\/li>\n\n\n\n<li><strong>zxing-Library<\/strong>: Laden Sie die neueste Version der zxing-Library herunter oder f\u00fcgen Sie die Abh\u00e4ngigkeit zu Ihrer Build-Konfiguration hinzu (z. B. Maven oder Gradle).<\/li>\n\n\n\n<li><strong>Ein Bild mit einem Barcode<\/strong>: Ein g\u00fcltiges Bild, das einen Barcode enth\u00e4lt, um das Parsen zu testen.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Installation der zxing-Library<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Verwendung von Maven<\/h4>\n\n\n\n<p>Falls Sie Maven verwenden, f\u00fcgen Sie folgende Abh\u00e4ngigkeit in Ihre <code>pom.xml<\/code> ein:<\/p>\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\">Verwendung von Gradle<\/h4>\n\n\n\n<p>F\u00fcgen Sie folgende Zeilen zu Ihrer <code>build.gradle<\/code> hinzu:<\/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\">implementation <span class=\"hljs-string\">'com.google.zxing:core:3.5.0'<\/span>\nimplementation <span class=\"hljs-string\">'com.google.zxing:javase:3.5.0'<\/span>\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<h3 class=\"wp-block-heading\">Grundlegendes Parsen eines Barcodes<\/h3>\n\n\n\n<p>Der Kernprozess zum Parsen eines Barcodes besteht aus folgenden Schritten:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Einlesen des Bildes<\/strong>: Laden des Bildes, das den Barcode enth\u00e4lt.<\/li>\n\n\n\n<li><strong>Umwandlung in ein Bin\u00e4rbild<\/strong>: Die zxing-Bibliothek verarbeitet Barcodes effizienter in bin\u00e4rer Form.<\/li>\n\n\n\n<li><strong>Dekodieren des Barcodes<\/strong>: Anwenden des zxing-Decoders auf das Bild.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Beispielcode<\/h3>\n\n\n\n<p>Hier ist ein einfacher Codeausschnitt, der einen Barcode aus einem Bild liest und den dekodierten Text ausgibt:<\/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\"><span class=\"hljs-keyword\">import<\/span> com.google.zxing.*;\n<span class=\"hljs-keyword\">import<\/span> com.google.zxing.client.j2se.BufferedImageLuminanceSource;\n<span class=\"hljs-keyword\">import<\/span> com.google.zxing.common.HybridBinarizer;\n\n<span class=\"hljs-keyword\">import<\/span> javax.imageio.ImageIO;\n<span class=\"hljs-keyword\">import<\/span> java.awt.image.BufferedImage;\n<span class=\"hljs-keyword\">import<\/span> java.io.File;\n<span class=\"hljs-keyword\">import<\/span> java.io.IOException;\n\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">BarcodeParser<\/span> <\/span>{\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-comment\">\/\/ Pfad zum Bild mit Barcode<\/span>\n        <span class=\"hljs-built_in\">String<\/span> imagePath = <span class=\"hljs-string\">\"barcode.jpg\"<\/span>;\n\n        <span class=\"hljs-keyword\">try<\/span> {\n            <span class=\"hljs-comment\">\/\/ Bild einlesen<\/span>\n            BufferedImage bufferedImage = ImageIO.read(<span class=\"hljs-keyword\">new<\/span> File(imagePath));\n\n            <span class=\"hljs-comment\">\/\/ Luminanzquelle erstellen<\/span>\n            LuminanceSource source = <span class=\"hljs-keyword\">new<\/span> BufferedImageLuminanceSource(bufferedImage);\n            BinaryBitmap bitmap = <span class=\"hljs-keyword\">new<\/span> BinaryBitmap(<span class=\"hljs-keyword\">new<\/span> HybridBinarizer(source));\n\n            <span class=\"hljs-comment\">\/\/ Barcode dekodieren<\/span>\n            Result result = <span class=\"hljs-keyword\">new<\/span> MultiFormatReader().decode(bitmap);\n\n            <span class=\"hljs-comment\">\/\/ Ausgabe des dekodierten Texts<\/span>\n            System.out.println(<span class=\"hljs-string\">\"Barcode-Text: \"<\/span> + result.getText());\n            System.out.println(<span class=\"hljs-string\">\"Barcode-Format: \"<\/span> + result.getBarcodeFormat());\n        } <span class=\"hljs-keyword\">catch<\/span> (IOException e) {\n            System.err.println(<span class=\"hljs-string\">\"Fehler beim Einlesen des Bildes: \"<\/span> + e.getMessage());\n        } <span class=\"hljs-keyword\">catch<\/span> (NotFoundException e) {\n            System.err.println(<span class=\"hljs-string\">\"Kein Barcode im Bild gefunden: \"<\/span> + e.getMessage());\n        }\n    }\n}\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<h3 class=\"wp-block-heading\">Code-Erkl\u00e4rung<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Bild einlesen<\/strong>: Mit <code>ImageIO.read()<\/code> wird das Bild aus einer Datei geladen.<\/li>\n\n\n\n<li><strong>Luminanzquelle<\/strong>: Die Klasse <code>BufferedImageLuminanceSource<\/code> wandelt das Bild in eine Form um, die zxing verarbeiten kann.<\/li>\n\n\n\n<li><strong>Binarisierung<\/strong>: <code>HybridBinarizer<\/code> erstellt eine bin\u00e4re Darstellung des Bildes, die f\u00fcr die Barcode-Erkennung ben\u00f6tigt wird.<\/li>\n\n\n\n<li><strong>Decoder<\/strong>: <code>MultiFormatReader<\/code> unterst\u00fctzt verschiedene Barcode-Typen und dekodiert das Bild.<\/li>\n\n\n\n<li><strong>Fehlerbehandlung<\/strong>: Es werden zwei Hauptfehler behandelt: Probleme beim Einlesen des Bildes und fehlende Barcodes.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Erweiterungen und Tipps<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Unterst\u00fctzung f\u00fcr mehrere Barcode-Typen<\/strong>: Standardm\u00e4\u00dfig erkennt zxing viele Barcode-Typen. Sie k\u00f6nnen jedoch spezifische Typen definieren, um die Leistung zu verbessern: <br><br><code>DecodeHintType hintMap = new EnumMap&lt;>(DecodeHintType.class); hintMap.put(DecodeHintType.POSSIBLE_FORMATS, Arrays.asList(BarcodeFormat.QR_CODE, BarcodeFormat.CODE_128)); Result result = new MultiFormatReader().decode(bitmap, hintMap);<\/code><br><\/li>\n\n\n\n<li><strong>Verarbeitung von Streams<\/strong>: Sie k\u00f6nnen auch InputStreams verwenden, um Barcodes aus Bildern in Datenbanken oder von Webservern zu lesen.<\/li>\n\n\n\n<li><strong>Bildoptimierung<\/strong>: Stellen Sie sicher, dass das Bild gut beleuchtet und der Barcode klar sichtbar ist. Verwenden Sie ggf. Bildverarbeitungsbibliotheken, um die Qualit\u00e4t zu verbessern.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">H\u00e4ufige Probleme und L\u00f6sungen<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Unscharfe Bilder<\/strong>: Verwenden Sie Bildverbesserungsalgorithmen wie Sch\u00e4rfen oder Kontrastanpassung.<\/li>\n\n\n\n<li><strong>Mehrere Barcodes in einem Bild<\/strong>: Verwenden Sie die Klasse <code>MultipleBarcodeReader<\/code>, um mehrere Barcodes zu erkennen.<\/li>\n\n\n\n<li><strong>Leistung<\/strong>: Bei gro\u00dfen Bildern kann die Verarbeitung langsam sein. Reduzieren Sie die Bildgr\u00f6\u00dfe oder beschr\u00e4nken Sie die Barcode-Formate.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Fazit<\/h3>\n\n\n\n<p>Die zxing-Library ist eine leistungsstarke und flexible L\u00f6sung zum Parsen von Barcodes in Java. Mit wenigen Zeilen Code k\u00f6nnen Sie Barcodes effizient aus Bildern extrahieren und dekodieren. Die Flexibilit\u00e4t der Bibliothek erm\u00f6glicht die Anpassung an verschiedenste Anwendungsf\u00e4lle, von der einfachen Barcode-Erkennung bis hin zur Verarbeitung komplexer Bilddaten.<\/p>\n\n\n\n<p>Egal ob f\u00fcr den Einzelhandel, die Logistik oder andere Anwendungen \u2013 das Verst\u00e4ndnis der Grundlagen und die Nutzung der zxing-Library bieten eine solide Grundlage f\u00fcr Ihre Barcode-Verarbeitungsanforderungen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Einleitung Barcodes sind allgegenw\u00e4rtig und finden in vielen Bereichen wie Logistik, Einzelhandel und Gesundheitswesen Anwendung. Das Parsen von Barcodes aus Bildern ist eine g\u00e4ngige Aufgabe in der Softwareentwicklung, und Java bietet mit der zxing-Library eine leistungsstarke Open-Source-L\u00f6sung f\u00fcr diese Herausforderung. Dieser Artikel beschreibt detailliert, wie man Barcodes aus einem Bild in Java mit der zxing-Library [&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-538","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\/538","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=538"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/538\/revisions"}],"predecessor-version":[{"id":539,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/538\/revisions\/539"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=538"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=538"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=538"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}