Ответ 1
setFormat('jpg')
вызвало проблемы. Изменение его на setFormat('jpeg')
решил.
Я пытаюсь прочитать файл в буфер, изменить его размер, а затем записать его на диск, используя следующий пример кода:
function processImage(data) {
gm(data, 'test.jpg')
.resize('300x300')
.background('white')
.flatten()
.setFormat('jpg')
.toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {
fs.writeFile('asd.jpg', buffer);
}
});
}
Однако это порождает ошибку Error: Stream yields empty buffer
. Я играл, использовал imageMagick и graphicsMagick, все тот же.
Если я заменим
toBuffer(...
с write('asd.jpg', function(err) ...
он фактически пишет правильный файл.
EDIT При написании этого вопроса я нашел решение, см. ответ
setFormat('jpg')
вызвало проблемы. Изменение его на setFormat('jpeg')
решил.
У меня была одна и та же проблема: в моем случае: установить графический файл.
sudo apt-get install graphicsmagick
Поток дает пустой буфер
Это указывает на общую ошибку graphiksmagick. Вот некоторые возможные причины:
const gm = require('gm').subClass({imageMagick: true});