节点Canvas / Resemble.js错误:给定的图像尚未完成加载

我正在尝试在节点中使用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) 

我对节点很新,所以我没有看到图像没有加载。 这是一个本地文件,我正在处理读取完成的callback(或者我想)。

有一点点挖掘让我觉得这是阅读jpg文件时,在canvas上的问题,但我正在努力了解细节。 我发现这个问题,看起来很相似,但我看不出如何将其转换为我的情况。

有人能解释我怎么能解决这个问题,我做错了什么?

你认为input图像可能不是有效的? 一些挖掘后,我发现节点canvas给出了一些相当误导性的错误信息,所以“图像还没有完成加载”可能会指向与图像文件相关的一系列错误。 请参阅https://github.com/Automattic/node-canvas/issues/486

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

编辑:你可以很容易地安装节点和resemble包没有安装JPG支持,你不会被警告JPG不被支持。 不幸的是,看起来像添加JPG支持是目前真正的痛点; 请参阅https://github.com/Automattic/node-canvas/issues/289

编辑2:刚刚find一个节点,帆布维基页面,专门命名这个问题,并解释说,这意味着libjpeg包丢失。 安装该软件包,然后重新编译Node-Canvas。 通过https://github.com/Automattic/node-canvas/wiki/installation—osx查看更多内容