我张贴这回答我的问题(口耳相传的情况下,任何人有过这个问题。)QR码不与大多数QR码扫描仪扫描
我生成一个使用ZXing的Android库的QR码。 QR码生成正确的,我能够显示它(手工绘制出来使用QRCode.getMatrix().getArray()
后)。但是,生成的QR代码不与大多数Android市场上可用的QR代码阅读器扫描,包括斑马线的扫描仪本身!
此外,每当我设置纠错等级为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码实际上[翻转](http://i.imgur.com/y5eJPoZ.jpg)。虽然斑马线文档没有解释如何索引到阵列qrCode.getMatrix()。的getArray()返回时,它假定你将索引作为[Y] [X],然后绘制该小区在(X,Y )。发布在问题中的代码将数组索引为[x] [y],该图像沿着Y = X线翻转图像。由此产生的二维码似乎是合法的,但只有'聪明'的扫描仪才能检测到这种翻转并对其进行扫描。 (纠错等级位也在对面。) – Alex 2013-02-12 16:48:01
是的,我用我的扫描仪试了一下。尽管原始文件提供了不可恢复的错误,但翻阅的版本可以无错读取。你应该作出回答并接受它,以便问题不再公开。 – Henry 2013-02-12 17:01:05
@Henry:只要我有足够的声望,我会立即作出正式答复(对于新用户,计算器的限制很大)。 – Alex 2013-02-12 17:06:36