apoclyps
apoclyps

Reputation: 521

Zxing - UPC +5 Supplement Barcode Detection

I have been attempting to use Zxing 2.3.0 to read images of UPC barcodes with a +5 supplement in java however i cannot read the supplement portion of the barcode. The code successfully reads the first portion only. After searching multiple websites i cannot find any further indications of how to read the supplement other than my current method. Any help would greatly be appreciated.

public static void main(String[] args) {
    decodeUPC5();
}

public static void decodeUPC5(){

    InputStream barCodeInputStream = null;
    try {
        barCodeInputStream = new FileInputStream("C:/Users/apoclyps/git/zxing-barcoder/Zxing-Test/img/upc5.png");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    BufferedImage barCodeBufferedImage = null;
    try {
        barCodeBufferedImage = ImageIO.read(barCodeInputStream);
    } catch (IOException e) {
        e.printStackTrace();
    }

    LuminanceSource source = new BufferedImageLuminanceSource(barCodeBufferedImage);
    BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

    // Attempting to read UPC + 5 Supplement
    GenericMultipleBarcodeReader  multiReader = new GenericMultipleBarcodeReader(new MultiFormatReader());
    try {
        multiReader.decodeMultiple(bitmap);
    } catch (NotFoundException e1) {
        e1.printStackTrace();
    }
    Result[] result = null;
    try {
        result = multiReader.decodeMultiple(bitmap);
    } catch (NotFoundException e) {
        e.printStackTrace();
    }

    System.out.println("Results length "+result.length);
    for(Result r : result ){
        System.out.println("Barcode text is " + r.toString());
    }
}

Barcode image!

Output Results length 1 Barcode text is 9780735200449

Upvotes: 0

Views: 394

Answers (1)

Sean Owen
Sean Owen

Reputation: 66876

Keep in mind that the content of the barcode is 9780735200449 and not 9780735200449 51299. It will always (correctly) return the 9780735200449 as the contents of the barcode.

The +5 extension is returned as ResultMetadata, under key ResultMetadatatype.UPC_EAN_EXTENSION.

Note that it will still return the UPC barcode even if it doesn't see a +5 extension, obviously. So it's possible you would see it return without a +5 extension on this image. However it works for me with the app and so would imagine it easily detects the +5. (If you scan with the app, look at the left for "Metadata $12.99")

Upvotes: 1

Related Questions