Core barcode encoding/decoding library supporting 17 formats including QR Code, Data Matrix, Aztec, PDF 417, and various 1D barcodes
—
ZXing Core organizes classes into a clear package hierarchy. Understanding this structure helps navigate the library and find the right classes quickly.
com.google.zxing
├── (root) # Core interfaces and enums
├── common # Shared utilities and data structures
├── qrcode # QR Code implementation
│ ├── decoder # QR Code decoding logic
│ └── encoder # QR Code encoding logic
├── datamatrix # Data Matrix implementation
│ ├── decoder # Data Matrix decoding
│ └── encoder # Data Matrix encoding
├── pdf417 # PDF417 implementation
│ ├── decoder # PDF417 decoding
│ └── encoder # PDF417 encoding
├── aztec # Aztec Code implementation
│ ├── decoder # Aztec decoding
│ └── encoder # Aztec encoding
├── maxicode # MaxiCode implementation
│ └── decoder # MaxiCode decoding (read-only)
├── oned # 1D barcode implementations
│ └── rss # RSS/GS1 DataBar formats
├── multi # Multiple barcode detection
│ └── qrcode # QR Code multi-detection
└── client # Client utilities
└── result # Result parsingPurpose: Core interfaces, enums, and base classes used throughout the library.
Key Classes:
// Main interfaces
interface Reader { }
interface Writer { }
interface MultipleBarcodeReader { }
// Primary implementations
class MultiFormatReader implements Reader { }
class MultiFormatWriter implements Writer { }
// Core enums
enum BarcodeFormat { }
enum DecodeHintType { }
enum EncodeHintType { }
enum ResultMetadataType { }
// Result classes
class Result { }
class ResultPoint { }
interface ResultPointCallback { }
// Exception hierarchy
abstract class ReaderException extends Exception { }
class NotFoundException extends ReaderException { }
class ChecksumException extends ReaderException { }
class FormatException extends ReaderException { }
class WriterException extends Exception { }
// Binary representation
class BinaryBitmap { }
// Luminance sources
abstract class LuminanceSource { }
class RGBLuminanceSource extends LuminanceSource { }
class PlanarYUVLuminanceSource extends LuminanceSource { }
class InvertedLuminanceSource extends LuminanceSource { }When to use:
Documentation: Core Reading and Writing, Barcode Formats, Exception Handling
Purpose: Shared utilities, data structures, and algorithms used across all formats.
Key Classes:
// Bit structures
class BitMatrix { }
class BitArray { }
class BitSource { }
// Binarization
abstract class Binarizer { }
class GlobalHistogramBinarizer extends Binarizer { }
class HybridBinarizer extends GlobalHistogramBinarizer { }
// Character encoding
enum CharacterSetECI { }
class ECIEncoderSet { }
class ECIStringBuilder { }
// Geometric transformations
class PerspectiveTransform { }
abstract class GridSampler { }
class DefaultGridSampler extends GridSampler { }
// Result containers
class DetectorResult { }
class DecoderResult { }
// Utilities
class StringUtils { }
// Detector utilities (com.google.zxing.common.detector)
class MathUtils { }
class MonochromeRectangleDetector { }
class WhiteRectangleDetector { }When to use:
Documentation: Bit Structures, Image Processing, Common Utilities
Purpose: Complete QR Code encoding and decoding implementation.
class QRCodeReader implements Reader { }
class QRCodeWriter implements Writer { }class Decoder { }
class QRCodeDecoderMetaData { }
enum ErrorCorrectionLevel { L, M, Q, H }
enum Mode { NUMERIC, ALPHANUMERIC, BYTE, KANJI, ... }
class Version { }
class FormatInformation { }class Encoder { }
class QRCode { }
class ByteMatrix { }
class MaskUtil { }
class MatrixUtil { }When to use:
Documentation: QR Code Support
Purpose: Data Matrix 2D barcode encoding and decoding.
class DataMatrixReader implements Reader { }
class DataMatrixWriter implements Writer { }enum SymbolShapeHint { FORCE_NONE, FORCE_SQUARE, FORCE_RECTANGLE }
class DefaultPlacement { }
class ErrorCorrection { }
class HighLevelEncoder { }class Decoder { }
class DataBlock { }
class Version { }When to use:
Documentation: Data Matrix Support
Purpose: PDF417 2D barcode encoding and decoding.
class PDF417Reader implements Reader, MultipleBarcodeReader { }
class PDF417Writer implements Writer { }
class PDF417ResultMetadata { }enum Compaction { AUTO, TEXT, BYTE, NUMERIC }
class Dimensions { }
class PDF417 { }class Decoder { }
class BarcodeMetadata { }
class BoundingBox { }
class DetectionResult { }When to use:
Documentation: PDF417 Support
Purpose: Aztec Code 2D barcode encoding and decoding.
class AztecReader implements Reader { }
class AztecWriter implements Writer { }class Encoder { }
class AztecCode { }
class HighLevelEncoder { }class Decoder { }
class AztecDetectorResult { }When to use:
Documentation: Aztec Support
Purpose: MaxiCode 2D barcode decoding (read-only).
class MaxiCodeReader implements Reader { }class Decoder { }
class MaxiCodeDecoderMetadata { }When to use:
Documentation: MaxiCode Support
Purpose: All 1D (linear) barcode format implementations.
// Base classes
abstract class OneDReader implements Reader { }
class MultiFormatOneDReader extends OneDReader { }
abstract class UPCEANReader extends OneDReader { }
// Format-specific readers and writers
class Code39Reader extends OneDReader { }
class Code39Writer implements Writer { }
class Code93Reader extends OneDReader { }
class Code93Writer implements Writer { }
class Code128Reader extends OneDReader { }
class Code128Writer implements Writer { }
class CodaBarReader extends OneDReader { }
class CodaBarWriter implements Writer { }
class EAN8Reader extends UPCEANReader { }
class EAN8Writer implements Writer { }
class EAN13Reader extends UPCEANReader { }
class EAN13Writer implements Writer { }
class UPCAReader implements Reader { }
class UPCAWriter implements Writer { }
class UPCEReader extends UPCEANReader { }
class UPCEWriter implements Writer { }
class ITFReader extends OneDReader { }
class ITFWriter implements Writer { }abstract class AbstractRSSReader extends OneDReader { }
class RSS14Reader extends AbstractRSSReader { }
class RSSExpandedReader extends AbstractRSSReader { }
class RSSUtils { }When to use:
Documentation: 1D Barcode Support
Purpose: Multiple barcode detection from single image.
interface MultipleBarcodeReader { }
class GenericMultipleBarcodeReader implements MultipleBarcodeReader { }
class ByQuadrantReader implements Reader { }class QRCodeMultiReader extends QRCodeReader
implements MultipleBarcodeReader { }When to use:
Documentation: Multiple Barcode Detection
Purpose: Parse barcode results into structured data types.
abstract class ResultParser { }
abstract class ParsedResult { }
enum ParsedResultType { }
// Specific parsed result types
class AddressBookParsedResult extends ParsedResult { }
class EmailAddressParsedResult extends ParsedResult { }
class URIParsedResult extends ParsedResult { }
class GeoParsedResult extends ParsedResult { }
class TelParsedResult extends ParsedResult { }
class SMSParsedResult extends ParsedResult { }
class CalendarParsedResult extends ParsedResult { }
class WifiParsedResult extends ParsedResult { }
class ProductParsedResult extends ParsedResult { }
class ISBNParsedResult extends ParsedResult { }
class VINParsedResult extends ParsedResult { }
class TextParsedResult extends ParsedResult { }
// Parser implementations (37 total)
class VCardResultParser extends ResultParser { }
class EmailAddressResultParser extends ResultParser { }
class WifiResultParser extends ResultParser { }
// ... and 34 moreWhen to use:
Documentation: Result Parsing
Dependency Flow:
Format-specific packages (qrcode, datamatrix, etc.)
↓
common
↓
(root)For basic decoding:
import com.google.zxing.*;
import com.google.zxing.common.*;For specific format:
import com.google.zxing.*;
import com.google.zxing.common.*;
import com.google.zxing.qrcode.*;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;For result parsing:
import com.google.zxing.*;
import com.google.zxing.client.result.*;For multi-detection:
import com.google.zxing.*;
import com.google.zxing.multi.*;Package Selection:
Performance:
Architecture: