初始方法存在两个问题。
maxBuffer必须足够高以处理子进程的整个响应。
二进制编码需要在各处正确设置。
完整的工作示例如下:
var fs = require('fs');var exec = require('child_process').exec;var cmd = 'convert ./test.jpg -';exec(cmd, {encoding: 'binary', maxBuffer: 5000*1024}, function(error, stdout) { fs.writeFileSync('test2.jpg', stdout, 'binary');});另一个示例,使用Express Web框架以HTTP响应发送数据,如下所示:
var express = require('express');var app = express.createServer();app.get('/myfile', function(req, res) { var cmd = 'convert ./test.jpg -'; exec(cmd, {encoding: 'binary', maxBuffer: 5000*1024}, function(error, stdout) { res.send(new Buffer(stdout, 'binary')); });});


