1

我在 java 中使用名为“<strong>zxing”(斑马线)的开源 Java 库。我的代码在这里

package eg.com.taman.bc.tut;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import com.google.zxing.qrcode.decoder.Mode;
import eg.com.tm.barcode.processor.BarcodeEngine;
import eg.com.tm.barcode.processor.config.DecodeConfig;
import eg.com.tm.barcode.processor.config.EncodeConfig;
import java.io.File;
import java.util.Map;


public class BarcodeApplication {

   public static void main(String[] args) {

      // File will be used for creating the QRCode barcode type.
      File qrCodeFile = new File("C:\\barcode\\QRCode.png");


      // Building the encoding configurations - using builder battern
      EncodeConfig encodeConfig =
              new EncodeConfig.Builder().createDirectories(Boolean.TRUE)
              .isQRCodeFormat(Boolean.TRUE)
              .withErrorCorrLevel(ErrorCorrectionLevel.M).build();

      // Generating the QRCode barcode

      String content = "This is the contents of the barcode. 7654321 (QRCode)";

      BarcodeEngine.encode(qrCodeFile, content, BarcodeFormat.QR_CODE, 200, 200, encodeConfig);

      encodeConfig =
              new EncodeConfig.Builder().createDirectories(Boolean.TRUE).
              withCharactersMode(Mode.ALPHANUMERIC).build();




      System.out.println("------------------- Begins Writing barcodes -------------------\n");
      System.out.println("Is QRCode Created? " + (qrCodeFile.exists() ? "Yes " : "Not not ") + "Created");
      System.out.println("\n------------------- Finished Writing barcodes -------------------");

      // Now we are going to decode (read) back contents of created barcodes

      // Building the decoding configurations - using builder battern
      DecodeConfig decodeConfig =
              new DecodeConfig.Builder()
              .withHumanBarcodes(Boolean.TRUE)
              .build();


      Map<BarcodeEngine.DecodeResults, Object> results = BarcodeEngine.decode(qrCodeFile, decodeConfig);

      String decodeText = (String) results.get(BarcodeEngine.DecodeResults.RESULT);
      String barcodeType = ((BarcodeFormat) results.get(BarcodeEngine.DecodeResults.BARCODE_FORMATE)).name();

      System.out.println("\n------------------- Begins reading barcodes -------------------\n");
      System.out.println("The decoded contents is: \"" + decodeText + "\", Barcode type is: " + barcodeType);



      System.out.println("The decoded contents is: \"" + decodeText + "\", Barcode type is: " + barcodeType);

      System.out.println("\n------------------- Finished reading barcodes -------------------");
      System.out.println("decode Text : "+decodeText);
      System.out.println("barcode Type : "+barcodeType);
   }
}

该代码将 Qr 条形码读取为图像文件。现在我想使用手持条码扫描仪来读取条码。有什么帮助吗??????

我正在使用 Java 桌面应用程序而不是 Android。

4

3 回答 3

2

听起来您正在寻找支持 HID 模式的扫描仪。

您的选择是具有 HID 模式的蓝牙扫描仪或 USB 扫描仪(大多数行为类似于键盘)。

一旦您选择了一个,HID 模式在所有扫描仪上基本相同,您可以在 Stackoverflow 上找到许多关于捕获扫描仪输入并将其与普通键盘上的用户输入分开的问题。

于 2013-10-10T17:57:35.770 回答
1

我的理解是 zxing 用于生成和处理 QR 码图像……就像您在代码中所做的那样。它不是驱动条形码扫描仪的 API。如果您想要其中之一,则需要说明您尝试使用的设备。

于 2013-10-06T12:27:03.383 回答
1

我已经做了一些工作,在大多数情况下它工作正常。我的代码是:

    InputStream barCodeInputStream = new FileInputStream("test.png");
    BufferedImage barCodeBufferedImage = ImageIO.read(barCodeInputStream);
    LuminanceSource source = new BufferedImageLuminanceSource(barCodeBufferedImage);
    BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
    Reader reader = new MultiFormatReader();
    Result result = reader.decode(bitmap);
    System.out.println("Barcode text is " + result.getText());

这在 QR 和条形码上都可以正常工作:)

于 2016-05-31T12:06:18.457 回答