Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点Canvas/simile.js错误:给定的图像未在加载时完成加载_Javascript_Node.js_Fs_Node Canvas_Resemblejs - Fatal编程技术网

Javascript 节点Canvas/simile.js错误:给定的图像未在加载时完成加载

Javascript 节点Canvas/simile.js错误:给定的图像未在加载时完成加载,javascript,node.js,fs,node-canvas,resemblejs,Javascript,Node.js,Fs,Node Canvas,Resemblejs,我正在尝试在节点中使用。我在安装canvas/cairo时遇到了一些麻烦(这与OSX小牛/XQuarts和自制软件的混合有关),但最终还是实现了 走得很远,但我已经撞到墙了 function ImageSimilarityChecker(){ var resemble = require("resemble").resemble; var fs = require("fs"); var util = require("util"); this.admitImag

我正在尝试在节点中使用。我在安装canvas/cairo时遇到了一些麻烦(这与OSX小牛/XQuarts和自制软件的混合有关),但最终还是实现了

走得很远,但我已经撞到墙了

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)
我对node非常陌生,所以我不知道图像是如何加载的。这是一个本地文件,我在readcompleted回调中处理它(或者我认为是这样)

当我阅读jpg文件时,稍微翻阅一下就会觉得这是画布上的一个问题,但我很难理解其中的细节。我发现了一个问题,看起来很相似,但我看不出如何将其转化为我的情况


有人能解释一下我如何修复这个问题以及我做错了什么吗?

您是否考虑过输入图像可能无效?经过一番挖掘,我发现节点画布会给出一些相当误导性的错误消息,因此“图像尚未完成加载”可能会指向与图像文件相关的一系列错误。看

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

编辑:无需安装JPG支持,您就可以轻松安装Node和类似的
软件包,并且不会收到不支持JPG的警告。不幸的是,添加JPG支持似乎是当前一个真正的痛点;看


编辑2:刚刚找到一个节点画布wiki页面,该页面专门命名了此问题,并解释说这意味着缺少
libjpeg
包。安装该包,然后重新编译节点画布。更多信息请访问

否,我一直想再看一次,因为这是一个附带项目,本周末我将尝试看一看,看看是否可以修复。我在OSX Mavericks上安装Cairo时也遇到问题,但最终还是以某种方式安装了它。然后,当我试图在节点的画布上绘制图像(context.drawImage)时,出现了这样一个错误“image given尚未完成加载”。图像是使用请求库从url动态加载的,这是导致错误的原因。由于某种原因,加载事件也未触发。最后:使用请求从url加载图像,保存在磁盘上,从磁盘加载,在画布上绘制。太麻烦了。