使用节点js的gm包调整图像错误

时间:2014-01-29 08:35:55

标签: javascript node.js

我已经尝试了一段时间,但我一直收到错误:

Error: Command failed: Invalid Parameter - /images

我安装了ImageMagick和gm软件包,所以这绝对不是问题所在。

    gm(imageLocation)
      .resize(100) // use your own width and height
      .write('here.jpg', function (err) {
        if (!err) console.log(' hooray! ');
        else console.log(err); 
      });

imageLocation./images/3.jpg。为什么这个错误会继续发生?我查看了文档

我在Windows 32位计算机上。我的服务器应该从文件夹中获取图像,调整大小,然后显示它。看起来我必须编写已调整大小的照片然后显示,但写入过程总是出错并且图像最终变空。

如果有办法跳过书写部分并直接显示照片,那也很棒。

谢谢!


我使用的网址查询:http://localhost:8123/images/3.jpg

完整代码:

var querystring = require('querystring'); //used for parsing parts of urls
    url = require('url'); 
    http = require('http'); 
    fs = require('fs'); 
    gm = require('gm').subClass({ imageMagick: true });; 

var server = http.createServer(); 

server.on('request', function(request, response){
    var parsed_url = url.parse(request.url, true); //true gets the query as well

    imageLocation = '.' + parsed_url.pathname;
    gm(imageLocation)
      .resize(100) // use your own width and height
      .write('here.jpg', function (err) {
        if (!err) console.log(' hooray! ');
        else console.log(err); 
      });


    if (getImage('here.jpg', response)){
        //image is displayed 
    }
    else{
    respond404(parsed_url.pathname, response); 
    }

})

function respond404(path, response){
    respond(404, "The requested path " + path + " was not found", response)  
}

function getImage(location, response)
{
    try{
        var img = fs.readFileSync(location);
        response.writeHead(200, {'Content-Type':'image/jpg'}); //parse this end
        response.end(img, 'binary');
        return true;
    }catch(e){
        return false; 
    }    
}

server.listen(8123); 

2 个答案:

答案 0 :(得分:3)

Svbaker的答案可以在Linux中使用(也可能是Mac?)

对于Windows,我通过打开command line中的administrator mode并在那里启动我的服务器来实现它。

答案 1 :(得分:1)

我能够通过更改您需要gm的方式来使代码工作:

var gm = require('gm');

我还必须记住在我的情况下使用正确的权限执行节点:

sudo node server.js