Go解析QR并转为TLV字符串
Go解析base64格式的二维码图片,并转为TLV字符串。
如果二维码是jpg/png文件,可直接读本地文件获取img对象。
示例
package main
import (
"bytes"
"encoding/base64"
"fmt"
"image/png"
"github.com/makiuchi-d/gozxing"
"github.com/makiuchi-d/gozxing/qrcode"
)
func recognizeQr(qr string) {
qrImg, err := base64.StdEncoding.DecodeString(qr)
if err != nil {
panic("Cannot decode base64")
}
r := bytes.NewReader(qrImg)
img, err := png.Decode(r)
if err != nil {
panic("Cannot decode png")
}
bmp, _ := gozxing.NewBinaryBitmapFromImage(img)
// decode image
qrReader := qrcode.NewQRCodeReader()
result, _ := qrReader.Decode(bmp, nil)
fmt.Println(result)
}
func main() {
recognizeQr("iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAQMAAAD58POIAAAABlBMVEX///8AAABVwtN+AAACU0lEQVR42tTSsY3mKhQFYEhMC5cEWjOJaQESAwluARLTGiS4BUjM0/warfRm7hawJ/wkW9yjQ/7lyBV5e3LInYc1MABa5lWJe/nTPGDAZ/C88tCiUCXhEHV7ibuFzH+DMlso08sQcADqBdGJP96G73f8ALnyn3zf8gO+ItiQXXfzp4L/Ac9eXq+cocoKOwYbAXGSU3fbaUeBzdetaJMLucyEAb0J6+LYVDzIuWMgXLldtbmCXRUwoP0AvvphZyVuYED08gdfud2CZxTY2E/eya7as6rBQOg188tfPqNQAwMCZCP7qUJb0aEAMrTQWSlVlVwx4Ldaa12vOQihAwOgQ8UN7DNDsijIF+iMuu96DuYx4C23fMN+Mi9DwoBsdL2nnFXYbj0GtLxATjlAGDl2DPgAWyKAbTMJg4GwJRFjc7llvgkKIMwmADY3QOwoyLluVmZpoXxK/wW8gxDgSjwP3SoG7AmV+a/jr++d/oTt4F4cLA9dQXkU1JV4eQlNxHzm8AtkIsaVTmc1RHsM6CxDCD6fSFgYGADokI5D+699Ggw2OnZ1qxKGDdfAQEbWVTx2oe/z88kvIMxvqnUih55px4C+rg0g5jwPNSsKqzyJ5tC8SmZHobsb4NDvrqMgGAjnaW7p5NE+CQXmzelKN3LIaisGRL0gvmYJdi0cCGzSA6jXJTAYyBVWe3me3ubsMQB6Ne8GqJuNz7R/AZ83S5uct7rKpyAEItmOTT7zKuEvcNu0gUxEmAMwABoS8zrqyD///A1ylavbKluE3QAG/2z+CwAA//+3BLtVXLXAxAAAAABJRU5ErkJggg==")
}
JS parse TLV
var qris = '00020101021226680016ID.CO.TELKOM.WWW011893600898025599662702150001952559966270303UMI51440014ID.CO.QRIS.WWW0215ID10200211817450303UMI520457325303360540825578.005502015802ID5916InterActive Corp6013KOTA SURABAYA61056013662130509413255111630439B7'
var tags = [];
var i = 0;
while (i < qris.length) {
var tag = qris.substring(i, i + 2);
i += 2;
var valueLength = Number(qris.substring(i, i + 2));
i += 2;
var value = qris.substring(i, i + valueLength);
i += valueLength;
tags.push({tag: tag, length: valueLength, value: value});
}
console.log(tags)
本文由 络壳 原创或整理,转载请注明出处