GIF-кодировщик: GIF не работает с некоторыми приложениями - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь создать анимированный GIF, но когда я пытаюсь открыть его, он не работает ни с какими приложениями, такими как Discord и онлайн-инструменты (например: https://onlineimagetools.com/gif-player (используется для тестирования)).

Один из моих сгенерированных GIF: https://i.azuxul.fr/e7uIVr.gif

Любая помощь будет оценена ..

        const canvas = Canvas.createCanvas(width, height);
        const ctx = canvas.getContext('2d');

        ctx.fillStyle = '#ff0000';
        ctx.fillRect(0, 0, width, height);

        const N = 20;
        for(var i = 0; i < N; i++) {
            msg.channel.send(i*(100/N) + '% finish !');

            ctx.drawImage(avatar, 15*i, Math.ceil((canvas.height - AVATAR_SIZE)/2), AVATAR_SIZE, AVATAR_SIZE);

            frames.push(ctx.getImageData(0, 0, width, height).data)
            ctx.fillStyle = '#000000';
            ctx.fillRect(0, 0, width, height);
        }

        var gif = new GifEncoder(width, height);
        gif.setDelay(300);

        var file = fs.createWriteStream('tmp.gif');
        gif.pipe(file);
        gif.writeHeader();

        var i = 0;
        frames.forEach(frame => {
            gif.addFrame(frame);
            if(i++ > 10) {
                i = 0;
                gif.read();
            }
        });

        gif.finish();
...