使用具有大数据的 ZXing 库生成条码时遇到问题

Trouble generating Barcode using ZXing library with large data

我需要使用数据生成 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();
    }
}

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

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

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

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

在此先感谢您的帮助。

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

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

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

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

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

很可能条码是有效的,但扫描仪相机无法获得如此大条码的足够清晰的图片。

查看此问题以获取更多信息:Unable to scan Code 128

如果可能,建议使用其他条码格式,例如 QR 码,它可以在不增加条码大小的情况下存储更多数据。

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