Use gif-encoder-2

This commit is contained in:
Dragon Fire
2024-04-25 00:47:30 -04:00
parent b7eacc98d4
commit 3eed5c373b
8 changed files with 21 additions and 60 deletions
+3 -5
View File
@@ -1,11 +1,10 @@
const Command = require('../../framework/Command');
const { PermissionFlagsBits } = require('discord.js');
const { createCanvas, loadImage } = require('canvas');
const GIFEncoder = require('gifencoder');
const GIFEncoder = require('gif-encoder-2');
const { MersenneTwister19937, bool } = require('random-js');
const request = require('node-superfetch');
const path = require('path');
const { streamToArray } = require('../../util/Util');
const frameCount = 52;
module.exports = class EjectCommand extends Command {
@@ -71,7 +70,6 @@ module.exports = class EjectCommand extends Command {
ctx.textBaseline = 'middle';
ctx.fillStyle = 'white';
ctx.font = this.client.fonts.get('Noto-Regular.ttf').toCanvasString(18);
const stream = encoder.createReadStream();
encoder.start();
encoder.setRepeat(0);
encoder.setDelay(100);
@@ -107,7 +105,7 @@ module.exports = class EjectCommand extends Command {
encoder.addFrame(ctx);
}
encoder.finish();
const buffer = await streamToArray(stream);
return msg.say({ files: [{ attachment: Buffer.concat(buffer), name: 'eject.gif' }] });
const attachment = encoder.out.getData();
return msg.say({ files: [{ attachment, name: 'eject.gif' }] });
}
};
+4 -5
View File
@@ -1,10 +1,10 @@
const Command = require('../../framework/Command');
const { PermissionFlagsBits } = require('discord.js');
const { createCanvas, loadImage } = require('canvas');
const GIFEncoder = require('gifencoder');
const GIFEncoder = require('gif-encoder-2');
const request = require('node-superfetch');
const path = require('path');
const { streamToArray, reactIfAble } = require('../../util/Util');
const { reactIfAble } = require('../../util/Util');
const { drawImageWithTint } = require('../../util/Canvas');
const frameCount = 46;
const { LOADING_EMOJI_ID, SUCCESS_EMOJI_ID } = process.env;
@@ -48,7 +48,6 @@ module.exports = class FireCommand extends Command {
const encoder = new GIFEncoder(avatar.width, avatar.height);
const canvas = createCanvas(avatar.width, avatar.height);
const ctx = canvas.getContext('2d');
const stream = encoder.createReadStream();
encoder.start();
encoder.setRepeat(0);
encoder.setDelay(0);
@@ -62,8 +61,8 @@ module.exports = class FireCommand extends Command {
encoder.addFrame(ctx);
}
encoder.finish();
const buffer = await streamToArray(stream);
const attachment = encoder.out.getData();
reactIfAble(msg, msg.author, SUCCESS_EMOJI_ID, '✅');
return msg.say({ files: [{ attachment: Buffer.concat(buffer), name: 'fire.gif' }] });
return msg.say({ files: [{ attachment, name: 'fire.gif' }] });
}
};
+4 -5
View File
@@ -1,10 +1,10 @@
const Command = require('../../framework/Command');
const { PermissionFlagsBits } = require('discord.js');
const { createCanvas, loadImage } = require('canvas');
const GIFEncoder = require('gifencoder');
const GIFEncoder = require('gif-encoder-2');
const request = require('node-superfetch');
const path = require('path');
const { streamToArray, reactIfAble } = require('../../util/Util');
const { reactIfAble } = require('../../util/Util');
const { distort } = require('../../util/Canvas');
const { LOADING_EMOJI_ID, SUCCESS_EMOJI_ID } = process.env;
const frameCount = 249;
@@ -54,7 +54,6 @@ module.exports = class MatrixCommand extends Command {
const encoder = new GIFEncoder(avatar.width, avatar.height);
const canvas = createCanvas(avatar.width, avatar.height);
const ctx = canvas.getContext('2d');
const stream = encoder.createReadStream();
encoder.start();
encoder.setRepeat(0);
encoder.setDelay(0);
@@ -72,8 +71,8 @@ module.exports = class MatrixCommand extends Command {
encoder.addFrame(ctx);
}
encoder.finish();
const buffer = await streamToArray(stream);
const attachment = encoder.out.getData();
reactIfAble(msg, msg.author, SUCCESS_EMOJI_ID, '✅');
return msg.say({ files: [{ attachment: Buffer.concat(buffer), name: 'matrix.gif' }] });
return msg.say({ files: [{ attachment, name: 'matrix.gif' }] });
}
};
+3 -5
View File
@@ -1,10 +1,9 @@
const Command = require('../../framework/Command');
const { PermissionFlagsBits } = require('discord.js');
const { createCanvas, loadImage } = require('canvas');
const GIFEncoder = require('gifencoder');
const GIFEncoder = require('gif-encoder-2');
const request = require('node-superfetch');
const path = require('path');
const { streamToArray } = require('../../util/Util');
const { drawImageWithTint } = require('../../util/Canvas');
const coord1 = [-25, -33, -42, -14];
const coord2 = [-25, -13, -34, -10];
@@ -51,7 +50,6 @@ module.exports = class TriggeredCommand extends Command {
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'white';
ctx.fillRect(0, 0, base.width, base.width);
const stream = encoder.createReadStream();
encoder.start();
encoder.setRepeat(0);
encoder.setDelay(50);
@@ -62,7 +60,7 @@ module.exports = class TriggeredCommand extends Command {
encoder.addFrame(ctx);
}
encoder.finish();
const buffer = await streamToArray(stream);
return msg.say({ files: [{ attachment: Buffer.concat(buffer), name: 'triggered.gif' }] });
const attachment = encoder.out.getData();
return msg.say({ files: [{ attachment, name: 'triggered.gif' }] });
}
};
+3 -5
View File
@@ -1,10 +1,9 @@
const Command = require('../../framework/Command');
const { PermissionFlagsBits } = require('discord.js');
const { createCanvas, loadImage } = require('canvas');
const GIFEncoder = require('gifencoder');
const GIFEncoder = require('gif-encoder-2');
const request = require('node-superfetch');
const path = require('path');
const { streamToArray } = require('../../util/Util');
const { centerImagePart } = require('../../util/Canvas');
const frameCount = 10;
@@ -36,7 +35,6 @@ module.exports = class PetCommand extends Command {
const encoder = new GIFEncoder(112, 112);
const canvas = createCanvas(112, 112);
const ctx = canvas.getContext('2d');
const stream = encoder.createReadStream();
encoder.start();
encoder.setRepeat(0);
encoder.setDelay(20);
@@ -55,7 +53,7 @@ module.exports = class PetCommand extends Command {
else squish += 4;
}
encoder.finish();
const buffer = await streamToArray(stream);
return msg.say({ files: [{ attachment: Buffer.concat(buffer), name: 'pet.gif' }] });
const attachment = encoder.out.getData();
return msg.say({ files: [{ attachment, name: 'pet.gif' }] });
}
};
+3 -5
View File
@@ -1,9 +1,8 @@
const Command = require('../../framework/Command');
const { PermissionFlagsBits } = require('discord.js');
const { createCanvas, loadImage } = require('canvas');
const GIFEncoder = require('gifencoder');
const GIFEncoder = require('gif-encoder-2');
const request = require('node-superfetch');
const { streamToArray } = require('../../util/Util');
module.exports = class ShakeCommand extends Command {
constructor(client) {
@@ -42,7 +41,6 @@ module.exports = class ShakeCommand extends Command {
const encoder = new GIFEncoder(512, height);
const canvas = createCanvas(512, height);
const ctx = canvas.getContext('2d');
const stream = encoder.createReadStream();
encoder.start();
encoder.setRepeat(0);
encoder.setDelay(20);
@@ -54,8 +52,8 @@ module.exports = class ShakeCommand extends Command {
encoder.addFrame(ctx);
}
encoder.finish();
const buffer = await streamToArray(stream);
return msg.say({ files: [{ attachment: Buffer.concat(buffer), name: 'shake.gif' }] });
const attachment = encoder.out.getData();
return msg.say({ files: [{ attachment, name: 'shake.gif' }] });
}
generateFrames(amount) {