Sepia stuff

This commit is contained in:
Daniel Odendahl Jr
2017-10-14 21:08:14 +00:00
parent 4ab3c6ad6a
commit fdf9a35abc
6 changed files with 26 additions and 15 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 KiB

@@ -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.',
@@ -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!`);
}
+2
View File
@@ -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!`);
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "xiaobot",
"version": "47.3.1",
"version": "47.4.0",
"description": "Your personal server companion.",
"main": "Shard.js",
"scripts": {
+12
View File
@@ -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;