Я использую библиотеку sharp Nodejs, найденную здесь: https://github.com/lovell/sharp. Я пытаюсь сделать несколько снимков экрана, а затем соединить изображения вместе, используя библиотеку Sharp.
Вот мой код. Я использую Puppeteer, чтобы делать скриншоты страницы, сохраняя в памяти в виде двоичного файла и объединяя эти двоичные файлы вместе, используя метод Sharp composite()
.
let pagePath = 'path/to/file.png';
let maxScreenshotHeight = 2000;
// Loop over sections of the screen that are of size maxScreenshotHeight.
for (let ypos = 0; ypos < contentSize.height; ypos += maxScreenshotHeight) {
const height = Math.min(contentSize.height - ypos, maxScreenshotHeight);
let image = await page.screenshot({
encoding: 'binary',
clip: {
x: 0,
y: ypos,
width: contentSize.width,
height
}
});
composites.push({input: image, gravity: 'southeast'});
}
sharp()
.composite(composites)
.toFile(pagePath, function(err) {
if (err) {
console.log('fail');
return;
}
console.log('complete');
});
Однако в обратном вызове toFile
ничегокогда-либо будет зарегистрирован. Регистрация в консоли работает, так как я добавил журналы до и после оператора toFile
, но кажется, что этот вызов функции никогда не завершается. Я хочу создать png-файл, который позже смогу загрузить.
Как объединить несколько снимков экрана и сохранить их на сервере для последующей загрузки? Я неправильно использую toFile
?