Hãy xem mô-đun nút node-imagemagick . Có một ví dụ sau trên trang của mô-đun để thay đổi kích thước và hình ảnh và ghi nó vào một tệp ...
var fs = require('fs');
im.resize({
srcData: fs.readFileSync('kittens.jpg', 'binary'),
width: 256
}, function(err, stdout, stderr){
if (err) throw err
fs.writeFileSync('kittens-resized.jpg', stdout, 'binary');
console.log('resized kittens.jpg to fit within 256x256px')
});
Bạn có thể thay đổi mã này để làm như sau ...
var mime = require('mime') // Get mime type based on file extension. use "npm install mime"
, fs = require('fs')
, util = require('util')
, http = require('http')
, im = require('imagemagick');
http.createServer(function (req, res) {
var filePath = 'test.jpg';
fs.stat(filePath, function (err, stat) {
if (err) { throw err; }
fs.readFile(filePath, 'binary', function (err, data) {
if (err) { throw err; }
im.resize({
srcData: data,
width: 256
}, function (err, stdout, stderr) {
if (err) { throw err; }
res.writeHead(200, {
'Content-Type': mime.lookup(filePath),
'Content-Length': stat.size
});
var readStream = fs.createReadStream(filePath);
return util.pump(readStream, res);
});
});
});
}).listen(8080);
Ps. Chưa chạy đoạn mã trên. Sẽ thử làm điều đó trong thời gian ngắn, nhưng nó sẽ cung cấp cho bạn ý tưởng về cách thay đổi kích thước và truyền trực tuyến tệp một cách không đồng bộ.