我已经尝试了一段时间,但我一直收到错误:
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);
答案 0 :(得分:3)
Svbaker的答案可以在Linux中使用(也可能是Mac?)
对于Windows,我通过打开command line
中的administrator mode
并在那里启动我的服务器来实现它。
答案 1 :(得分:1)
我能够通过更改您需要gm的方式来使代码工作:
var gm = require('gm');
我还必须记住在我的情况下使用正确的权限执行节点:
sudo node server.js