Android zxing库生成的QR码不会扫描大多数QR码扫描仪

Android zxing库生成的QR码不会扫描大多数QR码扫描仪,第1张

概述我发布这个来回答我自己的问题(传播这个词以防其他人有这个问题.)我正在使用ZXing的Android库生成QR码.QR码生成正常,我能够显示它(使用QRCode.getMatrix().getArray()手动渲染后.)但是,生成的QR码不能扫描Android上的大多数QR码阅读器市场,包括ZXing的扫描仪本身!此外,每当我将

我发布这个来回答我自己的问题(传播这个词以防其他人有这个问题.)

我正在使用ZXing的Android库生成QR码. QR码生成正常,我能够显示它(使用QRCode.getMatrix().getArray()手动渲染后.)但是,生成的QR码不能扫描AndroID上的大多数QR码阅读器市场,包括ZXing的扫描仪本身!

此外,每当我将错误修正级别设置为Encoder时,它会忽略它并编码一些随机级别(通常是级别Q).

我用这段代码生成QR码:

    QRCode code;    try    {            code = Encoder.encode("...QRCODEDATA...", ErrorCorrectionLevel.L);    }    catch(WriterException ex)    {            log("Failed to obtain a QR code");            return null;    }    

…然后,在获得QRCode对象后,我像这样绘制位图:

                byte [] [] bitArray = qrCode.getMatrix().getArray();

        if(bitArray == null || bitArray.length < 1)            return null;        for(int x = 0;x < bitArray.length;x++)        {            for(int y = 0;y < bitArray[x].length;y++)            {                if(bitArray[x][y] == 0)                    bitmapDrawCell(x,y,WHITE);                else                    bitmapDrawCell(x,y,BLACK);            }        }

Here’s我最终得到了什么.

它看起来正确,但它不会扫描.少数QR码扫描仪仍会扫描它,但是
大多数人不会.这是怎么回事?

解决方法:

这个问题的答案:

QR码实际上是翻转的.虽然ZXing文档没有解释如何索引qrCode.getMatrix().getArray()返回的数组,但它假定你将它索引为[y] [x],然后在(x,y)处绘制该单元格).问题中发布的代码将数组索引为[x] [y],它沿Y = X线翻转图像.

由此产生的QR码似乎是合法的,但只有“智能”扫描仪才能检测到这种翻转并进行扫描.

纠错级别位也位于相反的角落,因此如果您要手动验证(查看图像右下角的几位),则表明库似乎忽略了纠错设置.

总结

以上是内存溢出为你收集整理的Android zxing库生成的QR码不会扫描大多数QR码扫描仪全部内容,希望文章能够帮你解决Android zxing库生成的QR码不会扫描大多数QR码扫描仪所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1106424.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存