当尝试从ImageMagick子进程读取Node.js中的数据时,它会被破坏.
一个简单的测试用例如下:
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);
});
Run Code Online (Sandbox Code Playgroud)
我希望这相当于convert ./test.jpg - > test2.jpg正确编写二进制文件的命令行.
最初,maxBuffer选项太小而导致截断文件出现问题.增加之后,文件现在看起来比预期略大并且仍然损坏.来自stdout的数据需要通过HTTP发送.
从ImageMagick标准输出读取这些数据的正确方法是什么?