diff --git a/assets/images/demotivational-poster.png b/assets/images/demotivational-poster.png deleted file mode 100644 index 22a360de..00000000 Binary files a/assets/images/demotivational-poster.png and /dev/null differ diff --git a/commands/avatar-edit/challenger.js b/commands/avatar-edit/challenger.js index 0f331cd1..e7867e72 100644 --- a/commands/avatar-edit/challenger.js +++ b/commands/avatar-edit/challenger.js @@ -2,6 +2,7 @@ const Command = require('../../structures/Command'); const { createCanvas, loadImage } = require('canvas'); const request = require('node-superfetch'); const path = require('path'); +const { silhouette } = require('../../util/Canvas'); module.exports = class ChallengerCommand extends Command { constructor(client) { @@ -22,12 +23,18 @@ module.exports = class ChallengerCommand extends Command { prompt: 'Which user would you like to edit the avatar of?', type: 'user', default: msg => msg.author + }, + { + key: 'silhouetted', + prompt: 'Should the image be silhouetted?', + type: 'boolean', + default: false } ] }); } - async run(msg, { user }) { + async run(msg, { user, silhouetted }) { const avatarURL = user.displayAvatarURL({ format: 'png', size: 256 }); try { const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'challenger.png')); @@ -36,10 +43,18 @@ module.exports = class ChallengerCommand extends Command { const canvas = createCanvas(base.width, base.height); const ctx = canvas.getContext('2d'); ctx.drawImage(base, 0, 0); - ctx.drawImage(avatar, 484, 98, 256, 256); + ctx.drawImage(silhouetted ? this.silhouetteImage(avatar) : avatar, 484, 98, 256, 256); return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'challenger.png' }] }); } catch (err) { return msg.reply(`Oh no, an error occurred: \`${err.message}\`. Try again later!`); } } + + silhouetteImage(image) { + const canvas = createCanvas(image.width, image.height); + const ctx = canvas.getContext('2d'); + ctx.drawImage(image, 0, 0); + silhouette(ctx, 0, 0, image.width, image.height); + return canvas; + } }; diff --git a/commands/image-edit/demotivational-poster.js b/commands/image-edit/demotivational-poster.js index bcc5ecb1..80c2c96e 100644 --- a/commands/image-edit/demotivational-poster.js +++ b/commands/image-edit/demotivational-poster.js @@ -44,15 +44,22 @@ module.exports = class DemotivationalPosterCommand extends Command { async run(msg, { title, text, image }) { try { - const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'demotivational-poster.png')); const { body } = await request.get(image); const data = await loadImage(body); - const canvas = createCanvas(base.width, base.height); + const canvas = createCanvas(750, 600); const ctx = canvas.getContext('2d'); + ctx.fillStyle = 'black'; + ctx.fillRect(0, 0, canvas.width, canvas.height); + const ratio = data.width / data.height; + const width = Math.min(Math.round(402 / ratio), 602); + const x = (data.width / 2) - (width / 2); ctx.fillStyle = 'white'; - ctx.fillRect(0, 0, base.width, base.height); - ctx.drawImage(data, 69, 44, 612, 412); - ctx.drawImage(base, 0, 0); + ctx.fillRect(x - 4, 40, width + 4, 406); + ctx.fillStyle = 'black'; + ctx.fillRect(x - 2, 42, width + 2, 404); + ctx.fillStyle = 'white'; + ctx.fillRect(x, 44, width, 402); + ctx.drawImage(data, x, 44, width, 402); ctx.textAlign = 'center'; ctx.font = '60px Noto'; ctx.fillStyle = 'aquamarine'; diff --git a/package.json b/package.json index 21f72adc..e42567a0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xiao", - "version": "91.2.0", + "version": "91.2.1", "description": "Your personal server companion.", "main": "Xiao.js", "scripts": {