zxing:创建在ImageView中使用的ean_13条形码

时间:2013-10-15 15:17:37

标签: android zxing barcode-printing

我正在搞乱zxing库2.2(有没有文档?)

我想做的是:

获取现有的EAN13字符串,将其传递给库并获取要在ImageView中使用的图像(或将其写入内部存储,然后由我自己创建imageView的位图)

不幸的是,MatrixToImageWriter只适用于J2SE而不适用于android(因为awt?)因此我无法使用它。

我发现了这篇文章Generate barcode image in Android application

它适用于Code128,但当我将BarcodeFormat.CODE_128更改为EAN13时,我只得到一个空图像。

有什么想法吗? 是否有其他图书馆可以实现我的目标?

提前致谢!

2 个答案:

答案 0 :(得分:1)

您正在获取一个空图像,因为您传递的字符串格式不符合" EAN-13"条形码格式。它应该是13位数,其最后一位应该是前12位数的校验和。

您可以使用此链接获取有关EAN-13格式的更多信息。 http://www.barcodeisland.com/ean13.phtml

我使用了以下函数来创建字符串的校验和数字。

private int calculateChecksumDigit(String mMembershipId) {
    int total_sum=0;
    for(int i=0;i<mMembershipId.length();i++)
    {
        if(i%2!=0) {
            total_sum=total_sum+Integer.parseInt(""+mMembershipId.charAt(i))*3;
        }
        else
        {
            total_sum=total_sum+Integer.parseInt(""+mMembershipId.charAt(i));
        }
    }
    return 10-(total_sum%10);

}  

然后将其作为

传递
 BarCodeGenerator.encodeAsBitmap(mMembershipId+calculateChecksumDigit(mMembershipId), BarcodeFormat.EAN_13, widthInPixels, heightInPixels);

答案 1 :(得分:0)

您的代码是什么样的?当您单步执行创建代码(通过链接到的内容)时会发生什么

我创建了由android zxlib(通过相机)或条形码扫描仪(蓝牙枪)读取的datamatrix条形码,但是还没有在Android上创建条形码(因为我想打印条形码,我的开发机器更容易。)

我的datamatrix创建代码如下:

    MultiFormatWriter writer = new MultiFormatWriter();
    BitMatrix b = writer.encode(bitmapstr.toString(), BarcodeFormat.DATA_MATRIX, 1200, 1200);
    File f = new File(startpath + "bitmap-" + h.name + ".bmp");
    MatrixToImageWriter.writeToFile(b, "bmp", f);

至于帮助/文档,它是开源的,所以总是这样;)