【问题标题】:Trouble generating Barcode using ZXing library with large data使用大数据的 ZXing 库生成条形码时遇到问题
【发布时间】:2015-06-15 14:41:59
【问题描述】:

我需要生成128A格式的条码,数据为:900000588548001100001305000000000207201512345.6|12345.7

我正在使用 ZXing 库,这是我的方法:

private void barcodeGenerator(String data)
{
    try
    {
        com.google.zxing.MultiFormatWriter writer = new MultiFormatWriter();

        BitMatrix bm = writer.encode(data, BarcodeFormat.CODE_128, 700, 200);
        Bitmap ImageBitmap = Bitmap.createBitmap(700, 200, Config.ARGB_8888);

        for (int i = 0; i < 700; i++)
        {//width
            for (int j = 0; j < 200; j++)
            {//height
                ImageBitmap.setPixel(i, j, bm.get(i, j) ? Color.BLACK : Color.WHITE);
            }
        }

        File f = new File(Environment.getExternalStorageDirectory() + "/barcode1.png");


        FileOutputStream fos = new FileOutputStream(f);
        ImageBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}

此方法生成并存储在使用ZXing Barcode Scanner扫描的SDCard中的条码图像。

数据量少时,条码扫描成功。例如:123.4|456.7

但如果数据很大,例如:900000588548001100001305000000000207201512345.6|12345.7

似乎生成了一些错误的条形码,扫描仪无法扫描生成的条形码。

提前感谢您的帮助。

编辑:已添加生成的条形码图像

【问题讨论】:

    标签: java android image barcode zxing


    【解决方案1】:

    您可以将自己制作的条码图片上传到ZXing解码器在线确认是否有效:

    http://zxing.org/w/decode.jspx

    Code 128 barcode 的长度没有内在限制,您拥有的所有字符都是有效的。

    话虽如此,对于 Code 128A 条码,编码超过 20 个字符会使生成的条码非常宽且难以扫描。

    很可能条形码是有效的,但扫描仪的摄像头无法对如此大的条形码获得足够清晰的图像。

    查看这个问题了解更多信息:Unable to scan Code 128

    如果可能,建议使用另一种条形码格式,例如 QR 码,这样可以在不增加条形码大小的情况下存储更多数据。

    【讨论】:

    • 由于业务需要,无法选择二维码,附上生成的条码图片,看看吧。
    • 图片是有效的Code 128条码,在线zxing解码器可以读取。除非我打开图像并缩放它,否则我的手机无法读取它,因此它在我的显示器上非常大。在这篇文章中显示的尺寸下,黑线太细而无法成功解码。
    • 是的,你说得对。当我将长度增加到 1000 时,我能够正确扫描它。谢谢!
    【解决方案2】:

    https://play.google.com/store/apps/details?id=com.srowen.bs.android android 应用程序扫描完美。但在生成条码时,请确保它的宽度和高度尽可能小,以便轻松适应移动摄像头进行扫描。

    我为 900000588548001100001305000000000207201512345.6|12345.7 重新生成了 CODE-128 的条形码,只有 300 和 150 可以扫描,如果它不适合您,则可以放大宽度和高度。 生成的条码:https://i.stack.imgur.com/UF0qJ.png

    Screenshot after scanning

    【讨论】:

      猜你喜欢
      • 2020-12-02
      • 2012-09-25
      • 2018-06-29
      • 1970-01-01
      • 2014-04-17
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多