При попытке чтения данных в Node.js из дочернего процесса ImageMagick он выходит из строя.
Простым тестовым случаем будет следующее:
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);
});
Я ожидал бы, что это будет эквивалент командной строки convert ./test.jpg - > test2.jpg
, который правильно записывает двоичный файл.
Первоначально возникла проблема с параметром maxBuffer, который слишком мал и приводит к усеченному файлу. После увеличения этого файла файл теперь немного больше, чем ожидалось, и все еще поврежден. Данные из stdout необходимы для отправки по HTTP.
Каким будет правильный способ прочитать эти данные из stdout ImageMagick?