2

我正在尝试在节点中使用Resemble.js 。我在安装 canvas/cairo 时遇到了一些麻烦(与 OS X Mavericks/XQuarts 和 Homebrew 的混合有关),但最终还是到了那里。

走得很远,但我遇到了这个问题。

function ImageSimilarityChecker(){
    var resemble = require("resemble").resemble;
    var fs = require("fs");
    var util = require("util");

    this.admitImage = function(imagePath)
    {

        fs.readFile(imagePath, function (err, fileData) 
        {
            if (err) throw err;
            else 
            {
                var api = resemble(fileData).onComplete(function(data){
                    console.log(imagePath);
                    console.log(util.inspect(data));
                });
            }
        });

    }
}

new ImageSimilarityChecker().admitImage("./public/images/test.jpg");

导致此错误:

/Users/pcoghill/Projects/imgManip/auth/Servers/Farm/node_modules/resemble/lib/server.js:38
      context.drawImage(hiddenImage, 0, 0, width, height);
              ^
Error: Image given has not completed loading
    at load (/Users/pcoghill/Projects/imgManip/auth/Servers/Farm/node_modules/resemble/lib/server.js:38:15)
    at module.exports.loadImageData (/Users/pcoghill/Projects/imgManip/auth/Servers/Farm/node_modules/resemble/lib/server.js:11:7)
    at Object.onComplete (/Users/pcoghill/Projects/imgManip/auth/Servers/Farm/node_modules/resemble/resemble.js:508:5)
    at /Users/pcoghill/Projects/imgManip/auth/Servers/Farm/resembleFile.js:14:39
    at fs.js:271:14
    at Object.oncomplete (fs.js:107:15)

我对节点很陌生,所以我看不到图像是如何加载的。这是一个本地文件,我在读取完成的回调中处理它(或者我认为)。

稍微挖掘一下让我认为这是在阅读 jpg 文件时画布中的一个问题,但我很难理解细节。我发现了这个问题,看起来非常相似,但我看不出如何将其转换为我的情况。

有人可以解释我如何解决这个问题以及我做错了什么吗?

4

1 回答 1

1

您是否考虑过输入图像可能无效?经过一番挖掘,我发现 Node Canvas 提供了一些非常具有误导性的错误消息,因此“图像尚未完成加载”可能指向与图像文件相关的一系列错误。见https://github.com/Automattic/node-canvas/issues/486

我也被困在这个问题上,所以会继续挖掘,如果我发现更多,会在这里发布。

编辑:您无需安装 JPG 支持即可轻松安装 Node 和resemble软件包,并且不会警告您不支持 JPG。不幸的是,目前添加 JPG 支持似乎是一个真正的痛点;见https://github.com/Automattic/node-canvas/issues/289

编辑 2:刚刚找到一个专门命名此问题的 Node-Canvas wiki 页面,并解释说这意味着该libjpeg包丢失。安装那个包,然后重新编译 Node-Canvas。在https://github.com/Automattic/node-canvas/wiki/installation上查看更多信息---osx

于 2015-03-13T14:03:41.563 回答