从数据 URI 解码二维码
decode QR code from data URI
我尝试从数据 uri 解码二维码:
var dataUri = 'data:image/gif;base64,R0lGODdh9gD2AIAAAAAAAP///ywAAAAA9gD2AAAC...';
decodeQrCode(dataUri, cb);
我已经尝试过qrcode-decoder-js(摩卡测试示例)
function decodeQrCode(dataUri, cb) {
qrcode.callback = cb;
qrcode.decode(dataUri);
}
// error decoding QR Code
和QCODE解码器(摩卡测试示例)
function decodeQrCode(dataUri, cb) {
var qr = new QCodeDecoder();
var img = document.createElement('img');
img.setAttribute('src', dataUri);
qr.decodeFromImage(img, cb);
}
// Error decoding QR Code from Image
但在我看来,两者都本身不支持数据 URI。
如何从数据 URI 解码二维码?
您遇到的错误是您的二维码方向不正确。
这是旋转90度后的结果:
window.onload = function() {
var img = document.querySelector('img');
var canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext('2d');
// rotate by 90 deg
ctx.rotate(Math.PI);
ctx.translate(-img.width, -img.height);
ctx.drawImage(img, 0, 0);
// decode
QCodeDecoder().decodeFromImage(canvas.toDataURL(), function(err, res){
document.body.appendChild(document.createTextNode(res||err))
});
}
*{vertical-align : top}
<script src="https://rawgit.com/cirocosta/qcode-decoder/master/build/qcode-decoder.min.js"></script>
<img id="qr-code" src="data:image/gif;base64,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"
alt="">
相关文章:
- 多维数据集网格未在指定的分区中绘制
- 作为一个二维数组,从ajax接收
- 创建P5.js二维数组
- 在WebGL中绘制多个二维图像
- 如何在Javascript中从select标记的一系列选项中构建二维数组
- inArray,indexOf在二维数组中
- 比较二维数组js
- 从二维数组中获取img src和img维度,并在body中显示
- 使用方程和/或矢量在三维空间中绘制二维平面
- 如何在Java Script中比较二维数组和一维数组,并将常见数据存储在另一个数组中
- 使用二维数组从 MySQL 检索数据
- 从数据 URI 解码二维码
- 二维码不适用于大数据
- 将JavaScript转换为Ruby,以便将Excel数据分解为二维变量
- 如何使用ng-grid(来自AngularUI)处理二维数组数据
- 将JSON数据转换为二维数组
- 从二维json中获取数据
- 在二维数组中访问数据问题
- Angularjs:如何用$scope中的数据填充二维数组的第二个位置
- 从JSON数组中提取数据并将其存储在二维数组中