我发布这个来回答我自己的问题(传播这个词以防其他人有这个问题.)
我正在使用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码扫描仪所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)