image - 上载之前,SailsJS(beta)图像中的船长会调整大小

标签 image sails.js graphicsmagick skipper

我正在使用SailsJS(测试版)。我正在尝试找到一种方法,在调用Skipper函数req.file('inputName').upload()之前,使用graphicsmagick来获取Skipper在SailsJS-beta中解析的流以调整图像大小。

我的目标是拍摄较大的原始图像,并在上载之前调整其大小。 Sails beta引入了Skipper-file-parser,该文件记录不充分(至少我不理解)。请帮助我了解上传前如何调整图像大小。

这有效(我的 Controller 操作中的代码):

req.file('fileName').upload('storedImage.png', function(err, files){
  // File is now uploaded to storedImage.png
});

我想要的是这样的:
// Read the file stream into a file upload
var stream = req.file('fileName');

gm(stream).resize(200, 200).write('storedImage.png', function(err){
  // File is now resized to 200x200 px and uploaded to storedImage.png
});

我的问题是:如何正确地从req.file('fileName')获取流以将其发送到gm?

最佳答案

这应该为您工作:

var Writable = require('stream').Writable;
var resize = require('image-resize-stream')(100); // Or any other resizer

// The output stream to pipe to
var output = require('fs').createWriteStream('storedImage.png');

// Let's create a custom receiver
var receiver = new Writable({objectMode: true});
receiver._write = function(file, enc, cb) {
  file.pipe(resize).pipe(output);

  cb();
};

现在,您只需使用接收器即可:
req.file('fileName').upload(receiver, function(err, files){
  // File is now resized to 100px width and uploaded to ./storedImage.png
});

我觉得Skipper的API将会发生很大变化,但这目前仍适用(适用于v0.1.x)。

更新

具体来说,如果使用gm调整大小,它将是这样的:
var gm = require('gm');
var Writable = require('stream').Writable;

// The output stream to pipe to
var output = require('fs').createWriteStream('storedImage.png');

// Let's create a custom receiver
var receiver = new Writable({objectMode: true});
receiver._write = function(file, enc, cb) {
  gm(file).resize('200', '200').stream().pipe(output);

  cb();
};

关于image - 上载之前,SailsJS(beta)图像中的船长会调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24069203/

相关文章:

ios - 在 Twitter 上分享时 GIF 没有动画

html - 如何删除带有背景图片的链接中的丑陋边框?

html - 在使用 Node.js 创建的网站上播放 mp3

javascript - 使用 graphicsmagick 在 nodejs 上创建图像

node.js - 错误 : spawn ENOENT while using GM in node

undefined-symbol - GraphicsMagick,架构 x86_64 的 undefined symbol

javascript - 精细 uploader : Thumbnails on the fly clientside

Image Stitching参数好像没有人能解释一下,请大家帮忙理解一下

javascript - 从 JavaScript 文件访问服务功能

mysql - node-sql-query 构建复杂查询