2016-09-29 82 views
1

我有一个用于白色和黑色(我可以根据需要更改此)QR码的0/1的数组。数组的每一部分都是QR码的Y行。用javascript解码二进制QR码数据

我需要写一些能够将QR码数据解码为可用的东西,它可以是许多不同类型的QR码,因此我需要能够检测它是哪种类型。

这可以用纯JavaScript来完成吗?我无法运行JQuery。

它看起来像这样(40条线的前两条),但是我通过一个带有for循环的字符串生成它,所以我可以将它变成其他任何东西。

1 1 1 1 1 1 1 0 1 1 0 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 
1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1 1 1 0 1 0 0 0 0 1 1 1 1 0 1 1 1 0 0 1 1 1 0 1 0 0 0 0 0 1 
+0

“数组的每个部分都是Y线”不确定如何得到它。 X。你还想要什么输出?如果每个值代表一个像素(或一个块),并且你知道x个像素(宽度),你可以使用画布ImageData从这个图像生成一个图像。 – Kaiido

回答

-1

这些都是methodes:
toString(2)转换为二进制字符串。
parseInt(input,10)如果您知道输入应该是小数。
要从二进制文本转到文本,请使用parseInt(input,2).toString(10)

+1

我不认为这是二进制数据,但我可能会问题不对。 – Kaiido

+1

将字符串转换为二进制数据并不是真正的问题,我试图解决。我试图将QR字符串解码为它所说的内容。 – ti66

0

这可以用zxing完成,jsqrcode - zxing的javascript实现。

首先,您必须将数据保存在BinaryMatrix中,然后对其进行解码。

var bitMatrix = new BitMatrix(width); 
bitMatrix.clear(); 

//for each black pixel 
bitMatrix.flip(y,x); 

var decoded = Decoder.decode(bitMatrix); 

var decodedString = ""; 

for (var i = 0; i < decoded.length; i++) { 
    var currentWord = decoded[i]; 
    for(var j = 0; i < currentWord.length; j++) 
    { 
     result += String.fromCharCode(parseInt(currentWord[i])); 
    } 
} 

解码然后包含一个或多个ASCII字节数组。只需运行解码的所有数组的循环。 结果然后保存包含来自qr代码的原始字符串的字符串。

这应该在理论上适用于zxing支持的所有类型,但我只用qr码进行测试。