使用具有大数据的 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
我需要使用数据生成 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