/ / Lesen Sie den Barcode von einem hochgeladenen Bild in Java - Java, Barcode, Barcode-Scanner

Lesen Sie den Barcode von einem hochgeladenen Bild in Java - Java, Barcode, Barcode-Scanner

Ich muss den Barcode von einer hochgeladenen Bilddatei lesenfür eine Java-basierte Webanwendung. Ich habe versucht, Zxing und andere ähnliche Bibliotheken, aber es funktioniert nur, wenn wir präzise Bilder hochladen. Könnte jemand vorschlagen, eine API zum Lesen Barcode aus einem Bild? Das Bild könnte ein zufällig angeklickt werden und es könnte auch andere Daten enthalten Das heißt, wir müssen den Barcode identifizieren und entschlüsseln.

Antworten:

0 für die Antwort № 1

Da Sie nicht viele Informationen zur Verfügung gestellt haben, werde ich versuchen, Ihnen zu helfen, was ich denke, was das Problem ist.

Ich denke ZXing sollte der richtige Weg sein. Der Barcode-Decoder sucht standardmäßig den Barcode innerhalb eines Bildes. Wenn Sie ein Bild haben, das nur den Barcode selbst enthält, können Sie den Hinweis setzen PURE_BARCODE um die Decodierung zu beschleunigen. Es könnte nur Probleme geben, wenn Sie mehrere Barcodes in einem einzigen Bild haben.

Dein Problem scheint das hochgeladene Bild nicht ZXing zu sein. Ich würde vorschlagen, zu überprüfen, ob das Bild korrekt hochgeladen wird.

Hier ist ein Beispiel für die Decodierung eines BufferedImage mit einem beliebigen ZXing-Reader.

public void decodeCode() throws IOException, NotFoundException, FormatException, ChecksumException {
BufferedImage image = ImageIO.read(yourImage);
BinaryBitmap bitmap = convertImageToBinaryBitmap(image);
Result result = reader.decode(bitmap, hints);

assertNotNull("DecoderResult must not be null", result);
System.out.println(result.getText());
}

protected BinaryBitmap convertImageToBinaryBitmap(BufferedImage image) {
int[] pixels = image.getRGB(0, 0,
image.getWidth(), image.getHeight(),
null, 0, image.getWidth());
RGBLuminanceSource source = new RGBLuminanceSource(image.getWidth(),
image.getHeight(),
pixels);
return new BinaryBitmap(new HybridBinarizer(source));
}