【问题标题】:QR Code reading in windows 8 metro using javascript使用 JavaScript 在 Windows 8 Metro 中读取 QR 码
【发布时间】:2012-12-16 03:25:56
【问题描述】:

我一直在尝试通过将图像本地存储在我的文件系统上来解码二维码。我正在尝试使用 HTML5/Javascript 创建一个 Windows 8 Metro 应用程序来执行此操作。我可以生成代码,但我在解码时遇到问题。

我确实参考了这些以前的帖子

Does anyone know of a QR Code Reader library for a Windows 8 Metro App?

QR Code in Windows Store App

此后使用 esponce Web 服务并向 http://www.esponce.com/api/v3/decode?format=png 发出简单的 HTTP-POST 请求,正文中包含图像数据,但由于 404 错误,响应为空,因此没有返回任何内容。这是我尝试过的 sn-p:

var picDiv = document.getElementById("picDiv");
var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary;

picturesLibrary.getFileAsync("code.bmp").then(
    function completeFile(file) {
    return file.openAsync(Windows.Storage.FileAccessMode.readWrite);
    xhrDiv.innerText = "File Opened";
}).then(
    function completeStream(stream) {
        // Do processing. 
            var blob = MSApp.createBlobFromRandomAccessStream("image/bmp", stream);
            xhrDiv1.innerText = stream;
     return WinJS.xhr({ type: "POST", url:"http://www.esponce.com/api/v3/decode>", data: blob });
}).then(
    function (request) {
        picDiv.textContent = "uploaded file";
        picDiv.innerText = request.statusText;
        picDiv.innerText = request.status;

      }, 
    function (request) {
        picDiv.textContent = "error uploading file";
        picDiv.innerText = request.statusText;
    //    picDiv.innerText = request.statusText;
      //  picDiv.innerText = request.status;


    });

请帮我弄清楚上述方法有什么问题。

【问题讨论】:

  • 呃,为什么要使用外部服务进行二维码解码?最好在本地执行此操作 - 无需为此浪费昂贵的数据带宽。
  • 在本地我尝试使用 zxing.net 移植的 WinRT 库。但是在运行时几乎没有其他问题。您能否建议在 win8 中执行此操作的任何其他库?
  • 我目前正在为 Windows 运行时组件 WinMD 开发一个 zxing.net 端口,它可以与 HTML5/Javascript 一起使用。目前没有预构建的二进制文件,但您可以从这里获取当前源:zxingnet.svn.codeplex.com/svn/branches/WINMD

标签: javascript windows-8 microsoft-metro qr-code


【解决方案1】:

仅当 URL 不存在时才会出现错误 404,否则应该有不同的错误代码。可以通过查看响应 HTTP 标头 X-Api-Error 来诊断问题。

首先,从 URL 字符串中删除 '>' 字符并添加 format 参数以防万一

return WinJS.xhr({ type: "POST", url:"http://www.esponce.com/api/v3/decode?format=png", data: blob });

如果 BMP 不起作用,请尝试上传 PNG 图片。 Mime 类型应设置为 image/png

或者,您可以尝试来自 NuGet 的 Esponce API 库

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-24
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多