CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-com-google-zxing--core

Core barcode encoding/decoding library supporting 17 formats including QR Code, Data Matrix, Aztec, PDF 417, and various 1D barcodes

Pending
Overview
Eval results
Files

quick-start.mddocs/guides/

Quick Start Guide

Get started with ZXing Core in 5 minutes. These examples show the most common use cases for barcode encoding and decoding.

Installation

Add ZXing Core to your Maven project:

<dependency>
  <groupId>com.google.zxing</groupId>
  <artifactId>core</artifactId>
  <version>3.5.4</version>
</dependency>

Quick Example: Decode a Barcode

Decode any barcode from an image in just a few lines:

import com.google.zxing.*;
import com.google.zxing.common.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;

// Load image
BufferedImage image = ImageIO.read(new File("barcode.png"));

// Convert to ZXing format
int width = image.getWidth();
int height = image.getHeight();
int[] pixels = image.getRGB(0, 0, width, height, null, 0, width);
LuminanceSource source = new RGBLuminanceSource(width, height, pixels);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

// Decode
Reader reader = new MultiFormatReader();
try {
    Result result = reader.decode(bitmap);
    System.out.println("Barcode format: " + result.getBarcodeFormat());
    System.out.println("Barcode text: " + result.getText());
} catch (NotFoundException e) {
    System.out.println("No barcode found");
}

Quick Example: Generate a QR Code

Generate a QR code and save it as an image:

import com.google.zxing.*;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;

// Generate QR Code
QRCodeWriter writer = new QRCodeWriter();
BitMatrix matrix = writer.encode(
    "https://example.com",
    BarcodeFormat.QR_CODE,
    300,
    300
);

// Convert to image
BufferedImage image = new BufferedImage(300, 300, BufferedImage.TYPE_INT_RGB);
for (int y = 0; y < 300; y++) {
    for (int x = 0; x < 300; x++) {
        int color = matrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF;
        image.setRGB(x, y, color);
    }
}

// Save to file
ImageIO.write(image, "PNG", new File("qrcode.png"));
System.out.println("QR Code generated!");

Common Use Cases

Scan QR Code with UTF-8 Encoding

import com.google.zxing.*;
import java.util.*;

Map<DecodeHintType, Object> hints = new EnumMap<>(DecodeHintType.class);
hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);

Reader reader = new MultiFormatReader();
Result result = reader.decode(bitmap, hints);

Generate QR Code with High Error Correction

import com.google.zxing.*;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import java.util.*;

Map<EncodeHintType, Object> hints = new EnumMap<>(EncodeHintType.class);
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
hints.put(EncodeHintType.MARGIN, 1);

Writer writer = new QRCodeWriter();
BitMatrix matrix = writer.encode(
    "Important data",
    BarcodeFormat.QR_CODE,
    400,
    400,
    hints
);

Decode Specific Format (Faster)

import com.google.zxing.*;
import java.util.*;

// Only try QR Codes (much faster than scanning all formats)
Map<DecodeHintType, Object> hints = new EnumMap<>(DecodeHintType.class);
hints.put(DecodeHintType.POSSIBLE_FORMATS,
    Collections.singletonList(BarcodeFormat.QR_CODE));

Reader reader = new MultiFormatReader();
Result result = reader.decode(bitmap, hints);

Generate Data Matrix Code

import com.google.zxing.*;
import com.google.zxing.datamatrix.DataMatrixWriter;

Writer writer = new DataMatrixWriter();
BitMatrix matrix = writer.encode(
    "Product-12345",
    BarcodeFormat.DATA_MATRIX,
    200,
    200
);

Parse WiFi QR Code

import com.google.zxing.*;
import com.google.zxing.client.result.*;

Result result = reader.decode(bitmap);
ParsedResult parsed = ResultParser.parseResult(result);

if (parsed.getType() == ParsedResultType.WIFI) {
    WifiParsedResult wifi = (WifiParsedResult) parsed;
    System.out.println("SSID: " + wifi.getSsid());
    System.out.println("Password: " + wifi.getPassword());
    System.out.println("Encryption: " + wifi.getNetworkEncryption());
}

Most Common Classes

You'll use these classes for 90% of tasks:

Decoding:

  • MultiFormatReader - Decode any barcode format
  • QRCodeReader - Decode QR Codes specifically
  • RGBLuminanceSource - Convert images to luminance
  • HybridBinarizer - Convert to black/white
  • BinaryBitmap - Final format for readers

Encoding:

  • MultiFormatWriter - Encode any format
  • QRCodeWriter - Generate QR Codes
  • DataMatrixWriter - Generate Data Matrix codes
  • BitMatrix - Result of encoding

Configuration:

  • DecodeHintType - Configure decoding
  • EncodeHintType - Configure encoding
  • BarcodeFormat - Specify format

Results:

  • Result - Decoded barcode data
  • ResultParser - Parse structured data
  • ParsedResult - Structured data types

Next Steps

  • Core Reading and Writing - Detailed Reader/Writer APIs
  • QR Code Support - Complete QR Code documentation
  • Configuration Hints - All configuration options
  • Result Parsing - Parse WiFi, vCard, URLs, etc.
  • Common Patterns - Real-world usage patterns
  • Exception Handling - Handle errors properly

Troubleshooting

"NotFoundException" - No barcode found:

  • Ensure image quality is good (not blurry)
  • Try TRY_HARDER hint
  • Check image contains actual barcode
  • Verify barcode format is supported

QR Code too small in generated image:

  • Increase width/height parameters
  • Check MARGIN hint (default is 4 modules)
  • Ensure sufficient pixels per module

Character encoding issues:

  • Always set CHARACTER_SET hint to "UTF-8"
  • Check source data encoding
  • Verify no character set conflicts

Import errors:

  • Ensure ZXing Core 3.5.4 is in dependencies
  • Use correct package names (com.google.zxing.*)
  • Don't mix with other barcode libraries

Install with Tessl CLI

npx tessl i tessl/maven-com-google-zxing--core@3.5.1

docs

index.md

tile.json