Javascript 节点Canvas/simile.js错误:给定的图像未在加载时完成加载
我正在尝试在节点中使用。我在安装canvas/cairo时遇到了一些麻烦(这与OSX小牛/XQuarts和自制软件的混合有关),但最终还是实现了 走得很远,但我已经撞到墙了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
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加载图像,保存在磁盘上,从磁盘加载,在画布上绘制。太麻烦了。