Наложение буфера на буфер gm nodejs
у меня возникла проблема при наложении графических буферов друг на друга, я проверил, и буферы содержат данные, вот только когда я использую композитный метод, он пишет, что буфер пуст, по отдельности, когда я отправляю каждый буфер, все работает
const Console = require('ds-console');
const Fs = require('fs');
const GrIm = require('gm').subClass({
imageMagick: true
});
const Axios = require('axios');
const Path = require('path');
module.exports = {
enable: true,
type: 'MessageCreate',
async execute(message) {
if (message.content.startsWith('.card')) {
try {
const bgPath = Path.join(__dirname, 'assets', 'bg', 'bg3_1.png');
if (!Fs.existsSync(bgPath)) {
Console.log('Фоновое изображение не найдено:', bgPath);
return;
}
const overlayImageUrl = message.author.avatarURL({
extension: 'png'
});
if (!overlayImageUrl) {
Console.log('Не удалось получить URL аватара пользователя.');
return;
}
const targetSize = 50;
const overlayX = 20;
const overlayY = Math.floor((200 - targetSize) / 2);
Console.log('Загрузка изображения с URL:', overlayImageUrl);
const response = await Axios.get(overlayImageUrl, {
responseType: 'arraybuffer'
});
if (response.status !== 200) {
Console.log('Не удалось загрузить изображение, статус:', response.status);
return;
}
const overlayBuffer = await new Promise((resolve, reject) => {
const overlay = Buffer.from(response.data);
GrIm(overlay)
.resize(targetSize, targetSize, '!')
.toBuffer('PNG', (err, buffer) => {
if (err) {
reject('Ошибка при записи изображения: ' + err);
} else {
resolve(buffer);
}
});
});
const buffer = await new Promise((resolve, reject) => {
GrIm(bgPath)
.resize(900, 200, '^')
.gravity('Center')
.extent(900, 200)
.geometry(`+${overlayX}+${overlayY}`)
.composite(overlayBuffer)
.toBuffer('PNG', (err, buffer) => {
if (err) {
reject('Ошибка при записи изображения: ' + err);
} else {
resolve(buffer);
}
});
});
if (!buffer || buffer.length === 0) {
Console.log('Получен пустой буфер при финальной обработке.');
return;
}
await message.channel.send({
files: [{
attachment: buffer,
name: 'img.png'
}]
});
} catch (e) {
Console.log('Ошибка:', e);
}
}
}
};
Не понимаю в чем может быть проблема