diff --git a/assets/images/photograph.png b/assets/images/photograph.png deleted file mode 100644 index b8d535ab..00000000 Binary files a/assets/images/photograph.png and /dev/null differ diff --git a/commands/avatar-edit/look-at-this-photograph.js b/commands/avatar-edit/look-at-this-photograph.js index 2cb18cc5..9d82d515 100644 --- a/commands/avatar-edit/look-at-this-photograph.js +++ b/commands/avatar-edit/look-at-this-photograph.js @@ -7,7 +7,7 @@ module.exports = class LookAtThisPhotographCommand extends Command { constructor(client) { super(client, { name: 'look-at-this-photograph', - aliases: ['photo', 'nickelback', 'look-at-this-photo'], + aliases: ['photo', 'nickelback', 'look-at-this-photo', 'photograph'], group: 'avatar-edit', memberName: 'look-at-this-photograph', description: 'Draws a user\'s avatar over Nickelback\'s photograph.', diff --git a/commands/avatar-edit/photograph.js b/commands/avatar-edit/sepia.js similarity index 62% rename from commands/avatar-edit/photograph.js rename to commands/avatar-edit/sepia.js index 03866991..bdb26b65 100644 --- a/commands/avatar-edit/photograph.js +++ b/commands/avatar-edit/sepia.js @@ -1,15 +1,15 @@ const { Command } = require('discord.js-commando'); const { createCanvas, loadImage } = require('canvas'); const snekfetch = require('snekfetch'); -const path = require('path'); +const { sepia } = require('../../util/Util'); -module.exports = class PhotographCommand extends Command { +module.exports = class SepiaCommand extends Command { constructor(client) { super(client, { - name: 'photograph', + name: 'sepia', group: 'avatar-edit', - memberName: 'photograph', - description: 'Draws a user\'s avatar over a photograph.', + memberName: 'sepia', + description: 'Draws a user\'s avatar in sepia.', throttling: { usages: 1, duration: 15 @@ -30,19 +30,16 @@ module.exports = class PhotographCommand extends Command { if (!user) user = msg.author; const avatarURL = user.displayAvatarURL({ format: 'png', - size: 256 + size: 512 }); try { - const base = await loadImage(path.join(__dirname, '..', '..', 'assets', 'images', 'photograph.png')); const { body } = await snekfetch.get(avatarURL); const avatar = await loadImage(body); - const canvas = createCanvas(base.width, base.height); + const canvas = createCanvas(avatar.width, avatar.height); const ctx = canvas.getContext('2d'); - ctx.drawImage(base, 0, 0); - ctx.rotate(-8.21 * (Math.PI / 180)); - ctx.drawImage(avatar, 85, 116, 150, 150); - ctx.rotate(8.21 * (Math.PI / 180)); - return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'photograph.png' }] }); + ctx.drawImage(avatar, 0, 0); + sepia(ctx, 0, 0, avatar.width, avatar.height); + return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'sepia.png' }] }); } catch (err) { return msg.say(`Oh no, an error occurred: \`${err.message}\`. Try again later!`); } diff --git a/commands/avatar-edit/wanted.js b/commands/avatar-edit/wanted.js index e062a8ec..e3e9f236 100644 --- a/commands/avatar-edit/wanted.js +++ b/commands/avatar-edit/wanted.js @@ -2,6 +2,7 @@ const { Command } = require('discord.js-commando'); const { createCanvas, loadImage } = require('canvas'); const snekfetch = require('snekfetch'); const path = require('path'); +const { sepia } = require('../../util/Util'); module.exports = class WantedCommand extends Command { constructor(client) { @@ -41,6 +42,7 @@ module.exports = class WantedCommand extends Command { const ctx = canvas.getContext('2d'); ctx.drawImage(base, 0, 0); ctx.drawImage(avatar, 150, 360, 430, 430); + sepia(ctx, 150, 360, 430, 430); return msg.say({ files: [{ attachment: canvas.toBuffer(), name: 'wanted.png' }] }); } catch (err) { return msg.say(`Oh no, an error occurred: \`${err.message}\`. Try again later!`); diff --git a/package.json b/package.json index 7e98c5c8..945d92da 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xiaobot", - "version": "47.3.1", + "version": "47.4.0", "description": "Your personal server companion.", "main": "Shard.js", "scripts": { diff --git a/util/Util.js b/util/Util.js index 83eecfcd..17aa73f5 100644 --- a/util/Util.js +++ b/util/Util.js @@ -94,6 +94,18 @@ class Util { ctx.putImageData(data, x, y); return ctx; } + + static sepia(ctx, x, y, width, height) { + const data = ctx.getImageData(x, y, width, height); + for (let i = 0; i < data.data.length; i += 4) { + const brightness = (0.34 * data.data[i]) + (0.5 * data.data[i + 1]) + (0.16 * data.data[i + 2]); + data.data[i] = brightness + 100; + data.data[i + 1] = brightness + 50; + data.data[i + 2] = brightness; + } + ctx.putImageData(data, x, y); + return ctx; + } } module.exports = Util;