Здесь у меня есть Node.Js, где я хочу сделать обработку изображений в подпроцессе.Pass Buffer to ChildProcess Node.js
Как вы видите, я беру файл image.jpg
и хочу записать его обратно в hello.jpg
в подпроцессе:
var node = require('child_process').spawn('node',['-i']);
var fs = require('fs');
node.stdout.on('data',function(data) {
var fs = require('fs');
var gm = require('gm').subClass({ imageMagick: true });
gm(data)
.resize(500, 500)
.toBuffer("jpg", function(err, buffer) {
if (err) {
console.log(err);
}else{
fs.writeFile("hello.jpg", buffer);
}
});
});
var buffer = fs.readFileSync(__dirname + "/image.jpg");
node.stdin.write(buffer);
Однако, когда я запускаю этот файл я получаю эту ошибку:
[Error: Поток дает пустой буфер]
Для меня кажется, что буфер не передан правильно подпроцессу? Что я не так? Что можно сделать для запуска обработки изображений в подзадаче. Для меня важно, чтобы его не читали из файла в подпроцессе. Поскольку я хочу снова прочитать один файл, а затем отправить буфер на несколько подпроцессов, которые преобразуют изображения. Благодаря!
'gm' уже делает это в подпроцессе. (Асинхронно) – befzz
Привет @befzz, это здорово, не могли бы вы предоставить мне ссылку, где говорится об этом? И написать это как ответ? Благодаря! –
Но его не асинхронно? –