Node.js - 使用"request"和"node-canvas"下载和处理图像



我正在使用请求和节点canvas模块尝试下载和处理图像:

var request = require('request');
var Image = require('canvas').Image;
var url = 'http://farm8.staticflickr.com/7333/11286633486_070f0d33bc_n.jpg';
request.get({ url: url, encoding: null }, function(err, res, body) {
    if (err) throw err;
    var image = new Image();
    image.onerror = function() {
        console.error(arguments);
    };
    image.onload = function() {
        console.log('loaded image');
    };
    image.src = new Buffer(body, 'binary');
});

我会收到错误' Error: error while reading from input stream'(OnError事件已发出)。但是,当我在浏览器中击中上面的图像URL时,它会按预期显示图像。

我在做什么错?

修复了它!

看来我在OSX上(节点canvas的依赖项)上安装了Pixman和/或Cairo,这可能是因为我尝试通过Homebrowrew安装它们。

解决方案是使用:

摆脱自我酿造
brew uninstall cairo
brew uninstall pixman

...然后运行:

brew doctor

..检查与开罗和Pixman有关的任何断裂的符号链接等。然后,您必须手动删除任何开罗&Pixman bin/libs/symlinks等使用Finder。

接下来,请按照节点canvas的安装说明来重新安装开罗和pixman。

最后,您可能需要通过NPM重新安装节点 - 玻璃体,因此导航到您的" node_modules"文件夹并删除" canvas'dir。然后运行:

npm install canvas

最新更新