Нарисуйте изображение аватара Discord на холсте с URL (Node.js) - PullRequest
2 голосов
/ 02 августа 2020

Я пытаюсь нарисовать аватар пользователя Discord на node.js холсте. Согласно документации, я должен просто указать URL-адрес как sr c вот так:

var img = new Canvas.Image;
img.onload = () => context.drawImage(img, x, y, w, h);
img.onerror = err => console.log(err);
img.src = url;

Это вообще не работает. Итак, согласно другим источникам, я должен сам получить изображение с помощью http-клиента. Используя Ax ios, я получаю:

function requestImageFromURL(url, callback){
    Axios.get(url)
    .then(response => {
        callback(response.data);
    })
    .catch(err => {})
    .finally(() => {});
}

function drawImageFromURL(url, x, y, width, height){
    requestImageFromURL(url, function(buffer){
        var img = new Canvas.Image;
        img.onload = () => context.drawImage(img, x, y, width, height);
        img.onerror = err => console.log(err);
        img.src = buffer;
    });
}

, но это вызывает некоторые действительно странные ошибки, такие как Error: EINVAL, Invalid argument '�PNG → '. Итак, я получаю данные, но Canvas обрабатывает их не совсем правильно? Или требуется дополнительная предварительная обработка данных, которые я получаю?

1 Ответ

0 голосов
/ 17 августа 2020

Конструкторы вызывающих классов должны заканчиваться на (). Но в этом коде нет (), только Canvas.Image. Попробуйте использовать первый код с помощью (), и он должен работать.

...