Наложение буфера на буфер 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);
      }
    }
  }
};

Не понимаю в чем может быть проблема


Ответы (0 шт):