gpt4 book ai didi

android - 大多数二维码扫描器无法扫描 Android zxing 库生成的二维码

转载 作者:太空宇宙 更新时间:2023-11-03 12:58:46 26 4
gpt4 key购买 nike

我发布这个是为了回答我自己的问题(传播这个消息以防其他人遇到这个问题。)

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

此外,每当我为 <a href="http://zxing.org/w/docs/javadoc/com/google/zxing/qrcode/encoder/Encoder.html" rel="noreferrer noopener nofollow">Encoder</a> 设置纠错级别时,它会忽略它并使用一些随机级别(通常是级别 Q)进行编码。

我用这段代码生成二维码:

    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();



<pre><code> 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);
}
}
</code></pre>

Here's我最终得到了什么。


它看起来正确,但不会扫描。少数二维码扫描仪仍会扫描它,但是大多数不会。怎么回事?

最佳答案

本题答案:

二维码其实是翻转过来的。尽管 ZXing 文档没有解释如何对 qrCode.getMatrix().getArray() 返回的数组进行索引,但它假定您将其索引为 [y][x],然后在 (x,y) 处绘制该单元格).问题中发布的代码将数组索引为 [x][y],它沿 Y=X 行翻转图像。

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

纠错级别位也在对角,因此如果您手动验证(查看图像右下角的几位),似乎库忽略了纠错设置。

flipped QR code

关于android - 大多数二维码扫描器无法扫描 Android zxing 库生成的二维码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14837118/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com