ノードで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ファイルを読み取るときのキャンバスの問題だと思いますが、詳細を理解するのに苦労しています。非常によく似たこの質問を見つけましたが、これを自分の状況に変換する方法がわかりません。
誰かがこれを修正する方法と私が間違っていることを説明できますか?