mirror of
https://github.com/arthur-pbty/xiao.git
synced 2026-06-07 23:05:04 +02:00
Sepia stuff
This commit is contained in:
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,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
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "xiaobot",
|
||||
"version": "47.3.1",
|
||||
"version": "47.4.0",
|
||||
"description": "Your personal server companion.",
|
||||
"main": "Shard.js",
|
||||
"scripts": {
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user