我正在尝试在节点中使用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 文件时画布中的一个问题,但我很难理解细节。我发现了这个问题,看起来非常相似,但我看不出如何将其转换为我的情况。
有人可以解释我如何解决这个问题以及我做错了什么吗?