NodeJS gmresize和pipe道响应

有没有一种方式来resize的图像我的明确回应?

有些东西是:

var express = require('express'), app = express.createServer(); app.get('/', function(req, res){ gm('images/test.jpg') .resize(50,50) .stream(function streamOut (err, stdout, stderr) { if (err) return finish(err); stdout.pipe(res.end, { end: false }); //suspect error is here... stdout.on('end', function(){res.writeHead(200, { 'Content-Type': 'ima ge/jpeg' });}); stdout.on('error', finish); stdout.on('close', finish); }); }); app.listen(3000); 

这不幸的是导致一个错误…
很确定我有一些错误的语法。

       

网上收集的解决方案 "NodeJS gmresize和pipe道响应"

你的问题实际上帮助我得到同样的问题的答案。 它如何为我工作:

  var express = require('express'), app = express.createServer(); app.get('/', function(req, res, next){ gm('images/test.jpg') .resize(50,50) .stream(function streamOut (err, stdout, stderr) { if (err) return next(err); stdout.pipe(res); //pipe to response // the following line gave me an error compaining for already sent headers //stdout.on('end', function(){res.writeHead(200, { 'Content-Type': 'ima ge/jpeg' });}); stdout.on('error', next); }); }); app.listen(3000); 

我删除了所有对完成函数的引用,因为它没有被定义,并发送错误来表示error handling程序。 希望它可以帮助别人。 我也想添加我使用快递3,所以创build服务器是略有不同。

你得到这个错误,因为你想在你pipe理图像后写入res 。 尝试设置标题, 然后再pipe道您的图像:

 var express = require('express'), app = express.createServer(); app.get('/', function(req, res){ res.set('Content-Type', 'image/jpeg'); // set the header here gm('images/test.jpg') .resize(50,50) .stream(function (err, stdout, stderr) { stdout.pipe(res) }); }); app.listen(3000);