2016-09-29 76 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碼進行測試。