📌 1.0.0
parent
f1efbc6dac
commit
13c709744f
@ -0,0 +1,47 @@
|
|||||||
|
name: Node.js package
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 12
|
||||||
|
- run: npm ci
|
||||||
|
- run: npm test
|
||||||
|
|
||||||
|
publish-npm:
|
||||||
|
needs: build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 12
|
||||||
|
registry-url: https://registry.npmjs.org/
|
||||||
|
- run: npm publish
|
||||||
|
env:
|
||||||
|
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
|
||||||
|
|
||||||
|
publish-gpr:
|
||||||
|
needs: build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 12
|
||||||
|
registry-url: https://npm.pkg.github.com/
|
||||||
|
scope: '@your-github-username'
|
||||||
|
- run: npm publish
|
||||||
|
env:
|
||||||
|
NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
@ -1,5 +1,4 @@
|
|||||||
node_modules/
|
node_modules/
|
||||||
package-lock.json
|
package-lock.json
|
||||||
test/
|
test/
|
||||||
all.js
|
|
||||||
pas fait/
|
pas fait/
|
@ -1,2 +1,56 @@
|
|||||||
const DiscordImageGeneration = require("./module/DIG")
|
Blur = require('./module/filters/blur')
|
||||||
module.exports = Object.assign(DiscordImageGeneration)
|
Gay = require('./module/filters/gay')
|
||||||
|
Greyscale = require('./module/filters/greyscale')
|
||||||
|
Invert = require('./module/filters/invert')
|
||||||
|
Sepia = require('./module/filters/sepia')
|
||||||
|
|
||||||
|
Triggered = require('./module/gif/triggered')
|
||||||
|
Blink = require('./module/gif/blink')
|
||||||
|
|
||||||
|
Affect = require('./module/montage/affect')
|
||||||
|
Batslap = require('./module/montage/batslap')
|
||||||
|
Beautiful = require('./module/montage/beautiful')
|
||||||
|
Bed = require('./module/montage/bed')
|
||||||
|
Delete = require('./module/montage/delete')
|
||||||
|
Facepalm = require('./module/montage/facepalm')
|
||||||
|
Hitler = require('./module/montage/hitler')
|
||||||
|
Jail = require('./module/montage/jail')
|
||||||
|
Kiss = require('./module/montage/kiss')
|
||||||
|
Mms = require('./module/montage/mms')
|
||||||
|
Rip = require('./module/montage/rip')
|
||||||
|
Spank = require('./module/montage/spank')
|
||||||
|
Tatoo = require('./module/montage/tatoo')
|
||||||
|
Thomas = require('./module/montage/thomas')
|
||||||
|
Trash = require('./module/montage/trash')
|
||||||
|
Wanted = require('./module/montage/wanted')
|
||||||
|
|
||||||
|
Circle = require('./module/utils/circle')
|
||||||
|
Color = require('./module/utils/color')
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
Blur,
|
||||||
|
Gay,
|
||||||
|
Greyscale,
|
||||||
|
Invert,
|
||||||
|
Sepia,
|
||||||
|
Triggered,
|
||||||
|
Blink,
|
||||||
|
Affect,
|
||||||
|
Batslap,
|
||||||
|
Beautiful,
|
||||||
|
Bed,
|
||||||
|
Delete,
|
||||||
|
Facepalm,
|
||||||
|
Hitler,
|
||||||
|
Jail,
|
||||||
|
Kiss,
|
||||||
|
Mms,
|
||||||
|
Rip,
|
||||||
|
Spank,
|
||||||
|
Tatoo,
|
||||||
|
Thomas,
|
||||||
|
Trash,
|
||||||
|
Wanted,
|
||||||
|
Circle,
|
||||||
|
Color,
|
||||||
|
}
|
@ -1,456 +0,0 @@
|
|||||||
const Canvas = require("canvas");
|
|
||||||
|
|
||||||
const jimp = require("jimp");
|
|
||||||
|
|
||||||
const GIFEncoder = require("gifencoder");
|
|
||||||
|
|
||||||
const configure = require('@jimp/custom')
|
|
||||||
|
|
||||||
const circle = require('@jimp/plugin-circle')
|
|
||||||
|
|
||||||
configure({ plugins: [circle] }, jimp);
|
|
||||||
|
|
||||||
class DIG {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Beautiful
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async beautiful(image) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
let base = await jimp.read(__dirname +"/assets/beautiful.png");
|
|
||||||
base.resize(376, 400);
|
|
||||||
let img = await jimp.read(image);
|
|
||||||
img.resize(84, 95);
|
|
||||||
base.composite(img, 258, 28);
|
|
||||||
base.composite(img, 258, 229);
|
|
||||||
let raw;
|
|
||||||
base.getBuffer("image/png", (err, buffer) => {
|
|
||||||
raw = buffer;
|
|
||||||
});
|
|
||||||
return raw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Facepalm
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async facepalm(image) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
let canvas = Canvas.createCanvas(632, 357);
|
|
||||||
let ctx = canvas.getContext("2d");
|
|
||||||
ctx.fillStyle = "black";
|
|
||||||
ctx.fillRect(0, 0, 632, 357);
|
|
||||||
let avatar = await Canvas.loadImage(image);
|
|
||||||
ctx.drawImage(avatar, 199, 112, 235, 235);
|
|
||||||
let layer = await Canvas.loadImage(__dirname +"/assets/facepalm.png");
|
|
||||||
ctx.drawImage(layer, 0, 0, 632, 357);
|
|
||||||
return canvas.toBuffer();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gay
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async gay(image) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
let bg = await Canvas.loadImage(__dirname +"/assets/gay.png");
|
|
||||||
let img = await Canvas.loadImage(image);
|
|
||||||
const canvas = Canvas.createCanvas(480, 480);
|
|
||||||
const ctx = canvas.getContext("2d");
|
|
||||||
ctx.drawImage(img, 0, 0, 480, 480);
|
|
||||||
ctx.drawImage(bg, 0, 0, 480, 480);
|
|
||||||
return canvas.toBuffer();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Kiss
|
|
||||||
* @param {image1} image1
|
|
||||||
* @param {image2} image2
|
|
||||||
*/
|
|
||||||
static async kiss(image1, image2) {
|
|
||||||
if (!image1) throw new Error("You must provide an image as a first argument.");
|
|
||||||
if (!image2) throw new Error("You must provide an image as a second argument.");
|
|
||||||
let base = await jimp.read(__dirname+"/assets/kiss.png");
|
|
||||||
image1 = await jimp.read(image1);
|
|
||||||
image2 = await jimp.read(image2);
|
|
||||||
image1.circle();
|
|
||||||
image2.circle();
|
|
||||||
base.resize(768, 574);
|
|
||||||
image1.resize(200, 200);
|
|
||||||
image2.resize(200, 200);
|
|
||||||
base.composite(image1, 150, 25);
|
|
||||||
base.composite(image2, 350, 25);
|
|
||||||
let raw;
|
|
||||||
base.getBuffer("image/png", (err, buffer) => {
|
|
||||||
raw = buffer;
|
|
||||||
});
|
|
||||||
return raw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Rip
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async rip(image) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
const canvas = Canvas.createCanvas(244, 253);
|
|
||||||
const ctx = canvas.getContext("2d");
|
|
||||||
const background = await Canvas.loadImage(__dirname +"/assets/rip.png");
|
|
||||||
ctx.drawImage(background, 0, 0, canvas.width, canvas.height);
|
|
||||||
const avatar = await Canvas.loadImage(image);
|
|
||||||
ctx.drawImage(avatar, 63, 110, 90, 90);
|
|
||||||
return canvas.toBuffer();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Spank
|
|
||||||
* @param {image1} image1
|
|
||||||
* @param {image2} image2
|
|
||||||
*/
|
|
||||||
static async spank(image1, image2) {
|
|
||||||
if (!image1) throw new Error("You must provide an image as a first argument.");
|
|
||||||
if (!image2) throw new Error("You must provide an image as a second argument.");
|
|
||||||
let bg = await jimp.read(__dirname +"/assets/spank.png");
|
|
||||||
image1 = await jimp.read(image1);
|
|
||||||
image2 = await jimp.read(image2);
|
|
||||||
image1.circle();
|
|
||||||
image2.circle();
|
|
||||||
bg.resize(500, 500);
|
|
||||||
image1.resize(140, 140);
|
|
||||||
image2.resize(120, 120);
|
|
||||||
bg.composite(image2, 350, 220);
|
|
||||||
bg.composite(image1, 225, 5);
|
|
||||||
let raw;
|
|
||||||
bg.getBuffer("image/png", (err, buffer) => {
|
|
||||||
raw = buffer;
|
|
||||||
});
|
|
||||||
return raw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Batslap
|
|
||||||
* @param {image1} image1
|
|
||||||
* @param {image2} image2
|
|
||||||
*/
|
|
||||||
static async batslap(image1, image2) {
|
|
||||||
if (!image1) throw new Error("You must provide an image as a first argument.");
|
|
||||||
if (!image2) throw new Error("You must provide an image as a second argument.");
|
|
||||||
let base = await jimp.read(__dirname+"/assets/batslap.png");
|
|
||||||
image1 = await jimp.read(image1);
|
|
||||||
image2 = await jimp.read(image2);
|
|
||||||
image1.circle();
|
|
||||||
image2.circle();
|
|
||||||
base.resize(1000, 500);
|
|
||||||
image1.resize(220, 220);
|
|
||||||
image2.resize(200, 200);
|
|
||||||
base.composite(image2, 580, 260);
|
|
||||||
base.composite(image1, 350, 70);
|
|
||||||
let raw;
|
|
||||||
base.getBuffer("image/png", (err, buffer) => {
|
|
||||||
raw = buffer;
|
|
||||||
});
|
|
||||||
return raw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Affect
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async affect(image) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
let base = await jimp.read(__dirname + "/assets/affect.png");
|
|
||||||
let img = await jimp.read(image);
|
|
||||||
img.resize(200, 157);
|
|
||||||
base.composite(img, 180, 383);
|
|
||||||
let raw;
|
|
||||||
base.getBuffer("image/png", (err, buffer) => {
|
|
||||||
raw = buffer;
|
|
||||||
});
|
|
||||||
return raw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Blur
|
|
||||||
* @param {image} image
|
|
||||||
* @param {number} level
|
|
||||||
*/
|
|
||||||
static async blur(image, level = 5) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
image = await jimp.read(image);
|
|
||||||
image.resize(480, 480)
|
|
||||||
image.blur(isNaN(level) ? 5 : parseInt(level));
|
|
||||||
let raw;
|
|
||||||
image.getBuffer("image/png", (err, buffer) => {
|
|
||||||
raw = buffer;
|
|
||||||
});
|
|
||||||
return raw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Geryscale
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async greyscale(image) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
image = await jimp.read(image);
|
|
||||||
image.resize(480, 480)
|
|
||||||
image.greyscale();
|
|
||||||
let raw;
|
|
||||||
image.getBuffer("image/png", (err, buffer) => {
|
|
||||||
raw = buffer;
|
|
||||||
});
|
|
||||||
return raw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sepia
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async sepia(image) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
image = await jimp.read(image);
|
|
||||||
image.resize(480, 480)
|
|
||||||
image.sepia();
|
|
||||||
let raw;
|
|
||||||
image.getBuffer("image/png", (err, buffer) => {
|
|
||||||
raw = buffer;
|
|
||||||
});
|
|
||||||
return raw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Invert
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async invert(image) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
image = await jimp.read(image);
|
|
||||||
image.resize(480, 480)
|
|
||||||
image.invert();
|
|
||||||
let raw;
|
|
||||||
image.getBuffer("image/png", (err, buffer) => {
|
|
||||||
raw = buffer;
|
|
||||||
});
|
|
||||||
return raw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Delete
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async delete(image) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
let bg = await jimp.read(__dirname + "/assets/delete.png");
|
|
||||||
image = await jimp.read(image);
|
|
||||||
image.resize(195, 195);
|
|
||||||
bg.composite(image, 120, 135);
|
|
||||||
let raw;
|
|
||||||
bg.getBuffer("image/png", (err, buffer) => {
|
|
||||||
raw = buffer;
|
|
||||||
});
|
|
||||||
return raw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Trash
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async trash(image) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
let bg = await jimp.read(__dirname +"/assets/trash.png");
|
|
||||||
image = await jimp.read(image);
|
|
||||||
image.resize(309, 309);
|
|
||||||
image.blur(5);
|
|
||||||
bg.composite(image, 309, 0);
|
|
||||||
let raw;
|
|
||||||
bg.getBuffer("image/png", (err, buffer) => {
|
|
||||||
raw = buffer;
|
|
||||||
});
|
|
||||||
return raw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Color
|
|
||||||
* @param {color} color
|
|
||||||
*/
|
|
||||||
static async color(color = "#FFFFFF") {
|
|
||||||
const canvas = Canvas.createCanvas(2048, 2048);
|
|
||||||
const ctx = canvas.getContext("2d");
|
|
||||||
ctx.fillStyle = color;
|
|
||||||
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
|
||||||
return canvas.toBuffer();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Hitler
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async hitler(image) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
let bg = await jimp.read(__dirname + "/assets/hitler.png");
|
|
||||||
let img = await jimp.read(image);
|
|
||||||
img.resize(140, 140);
|
|
||||||
bg.composite(img, 46, 43);
|
|
||||||
let raw;
|
|
||||||
bg.getBuffer("image/png", (err, buffer) => {
|
|
||||||
raw = buffer;
|
|
||||||
});
|
|
||||||
return raw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Bed
|
|
||||||
* @param {image1} image1
|
|
||||||
* @param {image2} image2
|
|
||||||
*/
|
|
||||||
static async bed(image1, image2) {
|
|
||||||
if (!image1) throw new Error("You must provide an image as a first argument.");
|
|
||||||
if (!image2) throw new Error("You must provide an image as a second argument.");
|
|
||||||
let bg = await jimp.read(__dirname +"/assets/bed.png");
|
|
||||||
image1 = await jimp.read(image1);
|
|
||||||
image2 = await jimp.read(image2);
|
|
||||||
image1.circle();
|
|
||||||
image2.circle();
|
|
||||||
image1.resize(100, 100);
|
|
||||||
image2.resize(70, 70);
|
|
||||||
let image3 = image1.clone().resize(70, 70);
|
|
||||||
bg.composite(image1, 25, 100);
|
|
||||||
bg.composite(image1, 25, 300);
|
|
||||||
bg.composite(image3, 53, 450);
|
|
||||||
bg.composite(image2, 53, 575);
|
|
||||||
let raw;
|
|
||||||
bg.getBuffer("image/png", (err, buffer) => {
|
|
||||||
raw = buffer;
|
|
||||||
});
|
|
||||||
return raw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Wanted
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async wanted(image, currency) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
if (!currency) currency = "$"
|
|
||||||
if (typeof currency != "string") throw new Error("You must provide a string for the currency.")
|
|
||||||
if (currency.length > 1) throw new Error("You must provide only one character for the currency.")
|
|
||||||
var price = Math.floor(Math.random() * 1887088) + 329889
|
|
||||||
const canvas = Canvas.createCanvas(257, 383);
|
|
||||||
const ctx = canvas.getContext("2d");
|
|
||||||
const avatar = await Canvas.loadImage(image);
|
|
||||||
const background = await Canvas.loadImage(__dirname +"/assets/wanted.png");
|
|
||||||
ctx.drawImage(avatar, 25, 60, 210, 210);
|
|
||||||
ctx.drawImage(background, 0, 0, 257, 383);
|
|
||||||
ctx.font = 'Bold 35px Times New Roman'
|
|
||||||
ctx.fillStyle = "#513d34"
|
|
||||||
ctx.fillText(price.toLocaleString() + currency, 55, 310)
|
|
||||||
return canvas.toBuffer();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Triggered
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async triggered(image) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
const base = await Canvas.loadImage(__dirname +"/assets/triggered.png");
|
|
||||||
const img = await Canvas.loadImage(image);
|
|
||||||
const GIF = new GIFEncoder(256, 310)
|
|
||||||
GIF.start();
|
|
||||||
GIF.setRepeat(0);
|
|
||||||
GIF.setDelay(15);
|
|
||||||
const canvas = Canvas.createCanvas(256, 310);
|
|
||||||
const ctx = canvas.getContext('2d');
|
|
||||||
const BR = 20;
|
|
||||||
const LR = 10;
|
|
||||||
for (var i = 0; i < 9; i++) {
|
|
||||||
ctx.clearRect(0, 0, 256, 310);
|
|
||||||
ctx.drawImage(img, Math.floor(Math.random() * BR) - BR, Math.floor(Math.random() * BR) - BR, 256 + BR, 310 - 54 + BR);
|
|
||||||
ctx.fillStyle = '#FF000033';
|
|
||||||
ctx.fillRect(0, 0, 256, 310);
|
|
||||||
ctx.drawImage(base, Math.floor(Math.random() * LR) - LR, 310 - 54 + Math.floor(Math.random() * LR) - LR, 256 + LR, 54 + LR);
|
|
||||||
GIF.addFrame(ctx);
|
|
||||||
};
|
|
||||||
GIF.finish();
|
|
||||||
return GIF.out.getData();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Circle
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async circle(image) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
image = await jimp.read(image);
|
|
||||||
image.resize(480, 480);
|
|
||||||
image.circle();
|
|
||||||
let raw;
|
|
||||||
image.getBuffer("image/png", (err, buffer) => {
|
|
||||||
raw = buffer;
|
|
||||||
});
|
|
||||||
return raw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Jail
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async jail(image) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
let bg = await Canvas.loadImage(__dirname +"/assets/jail.png");
|
|
||||||
let img = await Canvas.loadImage(image);
|
|
||||||
const canvas = Canvas.createCanvas(400, 400);
|
|
||||||
const ctx = canvas.getContext("2d");
|
|
||||||
ctx.drawImage(img, 0, 0, 400, 400);
|
|
||||||
ctx.drawImage(bg, 0, 0, 400, 400);
|
|
||||||
return canvas.toBuffer();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* MMS
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async mms(image) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
let bg = await Canvas.loadImage(__dirname +"/assets/mms.png");
|
|
||||||
let img = await Canvas.loadImage(image);
|
|
||||||
const canvas = Canvas.createCanvas(400, 400);
|
|
||||||
const ctx = canvas.getContext("2d");
|
|
||||||
ctx.drawImage(img, 70, 20, 250, 250);
|
|
||||||
ctx.drawImage(bg, 0, 0, 400, 400);
|
|
||||||
return canvas.toBuffer();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Thomas
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async thomas(image) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
const canvas = Canvas.createCanvas(841, 1058);
|
|
||||||
const ctx = canvas.getContext("2d");
|
|
||||||
const avatar = await Canvas.loadImage(image);
|
|
||||||
const background = await Canvas.loadImage(__dirname +"/assets/thomas.png");
|
|
||||||
ctx.drawImage(avatar, 220, 190, 400, 400);
|
|
||||||
ctx.drawImage(background, 0, 0, 841, 1058);
|
|
||||||
return canvas.toBuffer();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tatoo
|
|
||||||
* @param {image} image
|
|
||||||
*/
|
|
||||||
static async tatoo(image) {
|
|
||||||
if (!image) throw new Error("You must provide an image as a first argument.");
|
|
||||||
const canvas = Canvas.createCanvas(750, 1089);
|
|
||||||
const ctx = canvas.getContext("2d");
|
|
||||||
const avatar = await Canvas.loadImage(image);
|
|
||||||
const background = await Canvas.loadImage(__dirname +"/assets/tatoo.png");
|
|
||||||
ctx.drawImage(avatar, 145, 575, 400, 400);
|
|
||||||
ctx.drawImage(background, 0, 0, 750, 1089);
|
|
||||||
return canvas.toBuffer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = DIG;
|
|
@ -0,0 +1,20 @@
|
|||||||
|
const jimp = require("jimp");
|
||||||
|
|
||||||
|
module.exports = class Blur {
|
||||||
|
/**
|
||||||
|
* Blur
|
||||||
|
* @param {image} image
|
||||||
|
* @param {level} level
|
||||||
|
*/
|
||||||
|
async getImage(image, level) {
|
||||||
|
if (!image) throw new Error(`You must provide an image.`);
|
||||||
|
image = await jimp.read(image);
|
||||||
|
image.resize(480, 480)
|
||||||
|
image.blur(isNaN(level) ? 5 : parseInt(level));
|
||||||
|
let raw;
|
||||||
|
image.getBuffer(`image/png`, (err, buffer) => {
|
||||||
|
raw = buffer;
|
||||||
|
});
|
||||||
|
return raw;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
const Canvas = require("canvas");
|
||||||
|
|
||||||
|
module.exports = class Gay {
|
||||||
|
/**
|
||||||
|
* Gay
|
||||||
|
* @param {image} image
|
||||||
|
*/
|
||||||
|
async getImage(image) {
|
||||||
|
if (!image) throw new Error(`You must provide an image.`);
|
||||||
|
let bg = await Canvas.loadImage(`../src/module/assets/gay.png`);
|
||||||
|
let img = await Canvas.loadImage(image);
|
||||||
|
const canvas = Canvas.createCanvas(480, 480);
|
||||||
|
const ctx = canvas.getContext(`2d`);
|
||||||
|
ctx.drawImage(img, 0, 0, 480, 480);
|
||||||
|
ctx.drawImage(bg, 0, 0, 480, 480);
|
||||||
|
return canvas.toBuffer();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
const jimp = require("jimp");
|
||||||
|
|
||||||
|
module.exports = class Geryscale {
|
||||||
|
/**
|
||||||
|
* Greyscale
|
||||||
|
* @param {image} image
|
||||||
|
*/
|
||||||
|
async getImage(image) {
|
||||||
|
if (!image) throw new Error(`You must provide an image.`);
|
||||||
|
image = await jimp.read(image);
|
||||||
|
image.resize(480, 480)
|
||||||
|
image.greyscale();
|
||||||
|
let raw;
|
||||||
|
image.getBuffer(`image/png`, (err, buffer) => {
|
||||||
|
raw = buffer;
|
||||||
|
});
|
||||||
|
return raw;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
const jimp = require("jimp");
|
||||||
|
|
||||||
|
module.exports = class Invert {
|
||||||
|
/**
|
||||||
|
* Invert
|
||||||
|
* @param {image} image
|
||||||
|
*/
|
||||||
|
async getImage(image) {
|
||||||
|
if (!image) throw new Error(`You must provide an image.`);
|
||||||
|
image = await jimp.read(image);
|
||||||
|
image.resize(480, 480)
|
||||||
|
image.invert();
|
||||||
|
let raw;
|
||||||
|
image.getBuffer(`image/png`, (err, buffer) => {
|
||||||
|
raw = buffer;
|
||||||
|
});
|
||||||
|
return raw;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
const jimp = require("jimp");
|
||||||
|
|
||||||
|
module.exports = class Sepia {
|
||||||
|
/**
|
||||||
|
* Sepia
|
||||||
|
* @param {image} image
|
||||||
|
*/
|
||||||
|
async getImage(image) {
|
||||||
|
if (!image) throw new Error(`You must provide an image.`);
|
||||||
|
image = await jimp.read(image);
|
||||||
|
image.resize(480, 480)
|
||||||
|
image.sepia();
|
||||||
|
let raw;
|
||||||
|
image.getBuffer(`image/png`, (err, buffer) => {
|
||||||
|
raw = buffer;
|
||||||
|
});
|
||||||
|
return raw;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
module.exports = {
|
||||||
|
/**
|
||||||
|
* Crate a responsive on the text
|
||||||
|
* Code from https://discordjs.guide/popular-topics/canvas.html#adding-in-text
|
||||||
|
* @param {object} canvas the canvas object
|
||||||
|
* @param {string} text the text
|
||||||
|
* @param {number} defaultFontSize the default font size
|
||||||
|
* @param {number} width the default width
|
||||||
|
* @param {string} font the font
|
||||||
|
*/
|
||||||
|
applyText(canvas, text, defaultFontSize, width, font) {
|
||||||
|
const ctx = canvas.getContext("2d");
|
||||||
|
do {
|
||||||
|
ctx.font = `${(defaultFontSize -= 1)-3}px ${font}`;
|
||||||
|
} while (ctx.measureText(text).width > width);
|
||||||
|
return ctx.font;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
const Canvas = require(`canvas`);
|
||||||
|
|
||||||
|
const GIFEncoder = require(`gifencoder`);
|
||||||
|
|
||||||
|
module.exports = class Blink {
|
||||||
|
/**
|
||||||
|
* Blink
|
||||||
|
* @param {image} image1
|
||||||
|
* @param {image} image2
|
||||||
|
* @param {number} timeout
|
||||||
|
* @param {number} height For later
|
||||||
|
* @param {number} width For later
|
||||||
|
*/
|
||||||
|
async getImage(image1, image2, timeout = 1000, height, width) {
|
||||||
|
if (!image1) throw new Error(`You must provide an image as a first argument.`);
|
||||||
|
if (!image2) throw new Error(`You must provide an image as a second argument.`);
|
||||||
|
if (isNaN(timeout)) throw new Error(`The timeout argument must be a number.`)
|
||||||
|
const img = await Canvas.loadImage(image1);
|
||||||
|
const base = await Canvas.loadImage(image2);
|
||||||
|
const GIF = new GIFEncoder(480, 480)
|
||||||
|
GIF.start();
|
||||||
|
GIF.setRepeat(0);
|
||||||
|
GIF.setDelay(timeout);
|
||||||
|
GIF.setTransparent();
|
||||||
|
const canvas = Canvas.createCanvas(480, 480);
|
||||||
|
const ctx = canvas.getContext('2d');
|
||||||
|
ctx.clearRect(0, 0, 480, 480);
|
||||||
|
ctx.drawImage(img, 0, 0, 480, 480);
|
||||||
|
GIF.addFrame(ctx);
|
||||||
|
const ctx2 = canvas.getContext('2d');
|
||||||
|
ctx2.clearRect(0, 0, 480, 480);
|
||||||
|
ctx2.drawImage(base, 0, 0, 480, 480);
|
||||||
|
GIF.addFrame(ctx2)
|
||||||
|
GIF.finish();
|
||||||
|
console.log(GIF.out.getData())
|
||||||
|
return GIF.out.getData();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
const Canvas = require(`canvas`);
|
||||||
|
|
||||||
|
const GIFEncoder = require(`gifencoder`);
|
||||||
|
|
||||||
|
module.exports = class Triggered {
|
||||||
|
/**
|
||||||
|
* Triggered
|
||||||
|
* @param {image} image
|
||||||
|
* @param {number} timeout
|
||||||
|
*/
|
||||||
|
async getImage(image, timeout = 15) {
|
||||||
|
if (!image) throw new Error(`You must provide an image.`);
|
||||||
|
if (isNaN(timeout)) throw new Error(`The timeout argument must be a number.`)
|
||||||
|
const base = await Canvas.loadImage(`../src/module/assets/triggered.png`);
|
||||||
|
const img = await Canvas.loadImage(image);
|
||||||
|
const GIF = new GIFEncoder(256, 310)
|
||||||
|
GIF.start();
|
||||||
|
GIF.setRepeat(0);
|
||||||
|
GIF.setDelay(timeout);
|
||||||
|
const canvas = Canvas.createCanvas(256, 310);
|
||||||
|
const ctx = canvas.getContext('2d');
|
||||||
|
const BR = 20;
|
||||||
|
const LR = 10;
|
||||||
|
for (var i = 0; i < 9; i++) {
|
||||||
|
ctx.clearRect(0, 0, 256, 310);
|
||||||
|
ctx.drawImage(img, Math.floor(Math.random() * BR) - BR, Math.floor(Math.random() * BR) - BR, 256 + BR, 310 - 54 + BR);
|
||||||
|
ctx.fillStyle = '#FF000033';
|
||||||
|
ctx.fillRect(0, 0, 256, 310);
|
||||||
|
ctx.drawImage(base, Math.floor(Math.random() * LR) - LR, 310 - 54 + Math.floor(Math.random() * LR) - LR, 256 + LR, 54 + LR);
|
||||||
|
GIF.addFrame(ctx);
|
||||||
|
};
|
||||||
|
GIF.finish();
|
||||||
|
return GIF.out.getData();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
const jimp = require("jimp");
|
||||||
|
|
||||||
|
module.exports = class Affect {
|
||||||
|
/**
|
||||||
|
* Affect
|
||||||
|
* @param {image} image
|
||||||
|
*/
|
||||||
|
async getImage(image) {
|
||||||
|
if (!image) throw new Error("You must provide an image.");
|
||||||
|
let base = await jimp.read(`../src/module/assets/affect.png`);
|
||||||
|
let img = await jimp.read(image);
|
||||||
|
img.resize(200, 157);
|
||||||
|
base.composite(img, 180, 383);
|
||||||
|
let raw;
|
||||||
|
base.getBuffer("image/png", (err, buffer) => {
|
||||||
|
raw = buffer;
|
||||||
|
});
|
||||||
|
return raw;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
const jimp = require("jimp");
|
||||||
|
|
||||||
|
module.exports = class Batslap {
|
||||||
|
/**
|
||||||
|
* Batslap
|
||||||
|
* @param {image} image1
|
||||||
|
* @param {image} image2
|
||||||
|
*/
|
||||||
|
async getImage(image1, image2) {
|
||||||
|
if (!image1) throw new Error("You must provide an image as a first argument.");
|
||||||
|
if (!image2) throw new Error("You must provide an image as a second argument.");
|
||||||
|
let base = await jimp.read(`../src/module/assets/batslap.png`);
|
||||||
|
image1 = await jimp.read(image1);
|
||||||
|
image2 = await jimp.read(image2);
|
||||||
|
image1.circle();
|
||||||
|
image2.circle();
|
||||||
|
base.resize(1000, 500);
|
||||||
|
image1.resize(220, 220);
|
||||||
|
image2.resize(200, 200);
|
||||||
|
base.composite(image2, 580, 260);
|
||||||
|
base.composite(image1, 350, 70);
|
||||||
|
let raw;
|
||||||
|
base.getBuffer("image/png", (err, buffer) => {
|
||||||
|
raw = buffer;
|
||||||
|
});
|
||||||
|
return raw;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
const jimp = require("jimp");
|
||||||
|
|
||||||
|
module.exports = class Beautiful {
|
||||||
|
/**
|
||||||
|
* Beautiful
|
||||||
|
* @param {image} image
|
||||||
|
*/
|
||||||
|
async getImage(image) {
|
||||||
|
if (!image) throw new Error("You must provide an image.");
|
||||||
|
let base = await jimp.read(`../src/module/assets/beautiful.png`);
|
||||||
|
base.resize(376, 400);
|
||||||
|
let img = await jimp.read(image);
|
||||||
|
img.resize(84, 95);
|
||||||
|
base.composite(img, 258, 28);
|
||||||
|
base.composite(img, 258, 229);
|
||||||
|
let raw;
|
||||||
|
base.getBuffer("image/png", (err, buffer) => {
|
||||||
|
raw = buffer;
|
||||||
|
});
|
||||||
|
return raw;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
const jimp = require("jimp");
|
||||||
|
|
||||||
|
module.exports = class Bed {
|
||||||
|
/**
|
||||||
|
* Bed
|
||||||
|
* @param {image} image1
|
||||||
|
* @param {image} image2
|
||||||
|
*/
|
||||||
|
async getImage(image1, image2) {
|
||||||
|
if (!image1) throw new Error(`You must provide an image as a first argument.`);
|
||||||
|
if (!image2) throw new Error(`You must provide an image as a second argument.`);
|
||||||
|
let bg = await jimp.read(`../src/module/assets/bed.png`);
|
||||||
|
image1 = await jimp.read(image1);
|
||||||
|
image2 = await jimp.read(image2);
|
||||||
|
image1.circle();
|
||||||
|
image2.circle();
|
||||||
|
image1.resize(100, 100);
|
||||||
|
image2.resize(70, 70);
|
||||||
|
let image3 = image1.clone().resize(70, 70);
|
||||||
|
bg.composite(image1, 25, 100);
|
||||||
|
bg.composite(image1, 25, 300);
|
||||||
|
bg.composite(image3, 53, 450);
|
||||||
|
bg.composite(image2, 53, 575);
|
||||||
|
let raw;
|
||||||
|
bg.getBuffer(`image/png`, (err, buffer) => {
|
||||||
|
raw = buffer;
|
||||||
|
});
|
||||||
|
return raw;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
const jimp = require("jimp");
|
||||||
|
|
||||||
|
module.exports = class Delete {
|
||||||
|
/**
|
||||||
|
* Delete
|
||||||
|
* @param {image} image
|
||||||
|
*/
|
||||||
|
async getImage(image) {
|
||||||
|
if (!image) throw new Error(`You must provide an image.`);
|
||||||
|
let bg = await jimp.read(`../src/module/assets/delete.png`);
|
||||||
|
image = await jimp.read(image);
|
||||||
|
image.resize(195, 195);
|
||||||
|
bg.composite(image, 120, 135);
|
||||||
|
let raw;
|
||||||
|
bg.getBuffer(`image/png`, (err, buffer) => {
|
||||||
|
raw = buffer;
|
||||||
|
});
|
||||||
|
return raw;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
const Canvas = require("canvas");
|
||||||
|
|
||||||
|
module.exports = class Facepalm {
|
||||||
|
/**
|
||||||
|
* Facepalm
|
||||||
|
* @param {image} image
|
||||||
|
*/
|
||||||
|
async getImage(image) {
|
||||||
|
if (!image) throw new Error("You must provide an image.");
|
||||||
|
let canvas = Canvas.createCanvas(632, 357);
|
||||||
|
let ctx = canvas.getContext("2d");
|
||||||
|
ctx.fillStyle = "black";
|
||||||
|
ctx.fillRect(0, 0, 632, 357);
|
||||||
|
let avatar = await Canvas.loadImage(image);
|
||||||
|
ctx.drawImage(avatar, 199, 112, 235, 235);
|
||||||
|
let layer = await Canvas.loadImage(`../src/module/assets/facepalm.png`);
|
||||||
|
ctx.drawImage(layer, 0, 0, 632, 357);
|
||||||
|
return canvas.toBuffer();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
const jimp = require("jimp");
|
||||||
|
|
||||||
|
module.exports = class Hitler {
|
||||||
|
/**
|
||||||
|
* Hitler
|
||||||
|
* @param {image} image
|
||||||
|
*/
|
||||||
|
async getImage(image) {
|
||||||
|
if (!image) throw new Error(`You must provide an image.`);
|
||||||
|
let bg = await jimp.read(`../src/module/assets/hitler.png`);
|
||||||
|
let img = await jimp.read(image);
|
||||||
|
img.resize(140, 140);
|
||||||
|
bg.composite(img, 46, 43);
|
||||||
|
let raw;
|
||||||
|
bg.getBuffer(`image/png`, (err, buffer) => {
|
||||||
|
raw = buffer;
|
||||||
|
});
|
||||||
|
return raw;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
const Canvas = require("canvas");
|
||||||
|
|
||||||
|
module.exports = class Jail {
|
||||||
|
/**
|
||||||
|
* Jail
|
||||||
|
* @param {image} image
|
||||||
|
*/
|
||||||
|
async getImage(image) {
|
||||||
|
if (!image) throw new Error(`You must provide an image.`);
|
||||||
|
let bg = await Canvas.loadImage(`../src/module/assets/jail.png`);
|
||||||
|
let img = await Canvas.loadImage(image);
|
||||||
|
const canvas = Canvas.createCanvas(400, 400);
|
||||||
|
const ctx = canvas.getContext(`2d`);
|
||||||
|
ctx.drawImage(img, 0, 0, 400, 400);
|
||||||
|
ctx.drawImage(bg, 0, 0, 400, 400);
|
||||||
|
return canvas.toBuffer();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
const jimp = require("jimp");
|
||||||
|
|
||||||
|
module.exports = class Kiss {
|
||||||
|
/**
|
||||||
|
* Kiss
|
||||||
|
* @param {image} image1
|
||||||
|
* @param {image} image2
|
||||||
|
*/
|
||||||
|
async getImage(image1, image2) {
|
||||||
|
if (!image1) throw new Error(`You must provide an image as a first argument.`);
|
||||||
|
if (!image2) throw new Error(`You must provide an image as a second argument.`);
|
||||||
|
let base = await jimp.read(`../src/module/assets/kiss.png`);
|
||||||
|
image1 = await jimp.read(image1);
|
||||||
|
image2 = await jimp.read(image2);
|
||||||
|
image1.circle();
|
||||||
|
image2.circle();
|
||||||
|
base.resize(768, 574);
|
||||||
|
image1.resize(200, 200);
|
||||||
|
image2.resize(200, 200);
|
||||||
|
base.composite(image1, 150, 25);
|
||||||
|
base.composite(image2, 350, 25);
|
||||||
|
let raw;
|
||||||
|
base.getBuffer(`image/png`, (err, buffer) => {
|
||||||
|
raw = buffer;
|
||||||
|
});
|
||||||
|
return raw;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
const Canvas = require("canvas");
|
||||||
|
|
||||||
|
module.exports = class Mms {
|
||||||
|
/**
|
||||||
|
* MMS
|
||||||
|
* @param {image} image
|
||||||
|
*/
|
||||||
|
async getImage(image) {
|
||||||
|
if (!image) throw new Error(`You must provide an image.`);
|
||||||
|
let bg = await Canvas.loadImage(`../src/module/assets/mms.png`);
|
||||||
|
let img = await Canvas.loadImage(image);
|
||||||
|
const canvas = Canvas.createCanvas(400, 400);
|
||||||
|
const ctx = canvas.getContext(`2d`);
|
||||||
|
ctx.drawImage(img, 60, 10, 270, 270);
|
||||||
|
ctx.drawImage(bg, 0, 0, 400, 400);
|
||||||
|
return canvas.toBuffer();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
const Canvas = require("canvas");
|
||||||
|
const jimp = require("jimp");
|
||||||
|
|
||||||
|
module.exports = class Rip {
|
||||||
|
/**
|
||||||
|
* Rip
|
||||||
|
* @param {image} image
|
||||||
|
*/
|
||||||
|
|
||||||
|
async getImage(image) {
|
||||||
|
if (!image) throw new Error(`You must provide an image.`);
|
||||||
|
const canvas = Canvas.createCanvas(244, 253);
|
||||||
|
const ctx = canvas.getContext(`2d`);
|
||||||
|
const background = await Canvas.loadImage(`../src/module/assets/rip.png`);
|
||||||
|
ctx.drawImage(background, 0, 0, canvas.width, canvas.height);
|
||||||
|
const avatar = await Canvas.loadImage(image);
|
||||||
|
ctx.drawImage(avatar, 63, 110, 90, 90);
|
||||||
|
return canvas.toBuffer();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
const jimp = require("jimp");
|
||||||
|
|
||||||
|
module.exports = class Spank {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {image} image1
|
||||||
|
* @param {image} image2
|
||||||
|
*/
|
||||||
|
async getImage(image1, image2) {
|
||||||
|
if (!image1) throw new Error(`You must provide an image as a first argument.`);
|
||||||
|
if (!image2) throw new Error(`You must provide an image as a second argument.`);
|
||||||
|
let bg = await jimp.read(`../src/module/assets/spank.png`);
|
||||||
|
image1 = await jimp.read(image1);
|
||||||
|
image2 = await jimp.read(image2);
|
||||||
|
image1.circle();
|
||||||
|
image2.circle();
|
||||||
|
bg.resize(500, 500);
|
||||||
|
image1.resize(140, 140);
|
||||||
|
image2.resize(120, 120);
|
||||||
|
bg.composite(image2, 350, 220);
|
||||||
|
bg.composite(image1, 225, 5);
|
||||||
|
let raw;
|
||||||
|
bg.getBuffer(`image/png`, (err, buffer) => {
|
||||||
|
raw = buffer;
|
||||||
|
});
|
||||||
|
return raw;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
const Canvas = require("canvas");
|
||||||
|
|
||||||
|
module.exports = class Tatoo {
|
||||||
|
/**
|
||||||
|
* Tatoo
|
||||||
|
* @param {image} image
|
||||||
|
*/
|
||||||
|
async getImage(image) {
|
||||||
|
if (!image) throw new Error(`You must provide an image.`);
|
||||||
|
const canvas = Canvas.createCanvas(750, 1089);
|
||||||
|
const ctx = canvas.getContext(`2d`);
|
||||||
|
const avatar = await Canvas.loadImage(image);
|
||||||
|
const background = await Canvas.loadImage(`../src/module/assets/tatoo.png`);
|
||||||
|
ctx.drawImage(avatar, 145, 575, 400, 400);
|
||||||
|
ctx.drawImage(background, 0, 0, 750, 1089);
|
||||||
|
return canvas.toBuffer();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
const Canvas = require("canvas");
|
||||||
|
|
||||||
|
module.exports = class Thomas {
|
||||||
|
/**
|
||||||
|
* Thomas
|
||||||
|
* @param {image} image
|
||||||
|
*/
|
||||||
|
async getImage(image) {
|
||||||
|
if (!image) throw new Error(`You must provide an image.`);
|
||||||
|
const canvas = Canvas.createCanvas(841, 1058);
|
||||||
|
const ctx = canvas.getContext(`2d`);
|
||||||
|
const avatar = await Canvas.loadImage(image);
|
||||||
|
const background = await Canvas.loadImage(`../src/module/assets/thomas.png`);
|
||||||
|
ctx.drawImage(avatar, 220, 190, 400, 400);
|
||||||
|
ctx.drawImage(background, 0, 0, 841, 1058);
|
||||||
|
return canvas.toBuffer();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
const jimp = require("jimp");
|
||||||
|
|
||||||
|
module.exports = class Trash {
|
||||||
|
/**
|
||||||
|
* Trash
|
||||||
|
* @param {image} image
|
||||||
|
*/
|
||||||
|
async getImage(image) {
|
||||||
|
if (!image) throw new Error(`You must provide an image.`);
|
||||||
|
let bg = await jimp.read(`../src/module/assets/trash.png`);
|
||||||
|
image = await jimp.read(image);
|
||||||
|
image.resize(309, 309);
|
||||||
|
image.blur(5);
|
||||||
|
bg.composite(image, 309, 0);
|
||||||
|
let raw;
|
||||||
|
bg.getBuffer(`image/png`, (err, buffer) => {
|
||||||
|
raw = buffer;
|
||||||
|
});
|
||||||
|
return raw;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
const Canvas = require("canvas");
|
||||||
|
const {
|
||||||
|
applyText
|
||||||
|
} = require(`../functions`);
|
||||||
|
|
||||||
|
module.exports = class Wanted {
|
||||||
|
/**
|
||||||
|
* Wanted
|
||||||
|
* @param {image} image
|
||||||
|
*/
|
||||||
|
async getImage(image, currency = "$") {
|
||||||
|
if (!image) throw new Error(`You must provide an image.`);
|
||||||
|
if (typeof currency != `string`) throw new Error(`You must provide a string for the currency.`)
|
||||||
|
if (currency.length > 1) throw new Error(`You must provide only one character for the currency.`)
|
||||||
|
var price = Math.floor(Math.random() * 188708) + 329889
|
||||||
|
const canvas = Canvas.createCanvas(257, 383);
|
||||||
|
const ctx = canvas.getContext(`2d`);
|
||||||
|
const avatar = await Canvas.loadImage(image);
|
||||||
|
const background = await Canvas.loadImage(`../src/module/assets/wanted.png`);
|
||||||
|
ctx.drawImage(avatar, 25, 60, 210, 210);
|
||||||
|
ctx.drawImage(background, 0, 0, 257, 383);
|
||||||
|
ctx.font = applyText(canvas, price.toLocaleString() + currency, 40, 200, "Times New Roman");
|
||||||
|
ctx.fillStyle = `#513d34`
|
||||||
|
ctx.fillText(price.toLocaleString() + currency, 54, 320)
|
||||||
|
return canvas.toBuffer();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
const jimp = require("jimp");
|
||||||
|
|
||||||
|
module.exports = class Circle {
|
||||||
|
/**
|
||||||
|
* Circle
|
||||||
|
* @param {image} image
|
||||||
|
*/
|
||||||
|
async getImage(image) {
|
||||||
|
if (!image) throw new Error(`You must provide an image.`);
|
||||||
|
image = await jimp.read(image);
|
||||||
|
image.resize(480, 480);
|
||||||
|
image.circle();
|
||||||
|
let raw;
|
||||||
|
image.getBuffer(`image/png`, (err, buffer) => {
|
||||||
|
raw = buffer;
|
||||||
|
});
|
||||||
|
return raw;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
const Canvas = require("canvas");
|
||||||
|
|
||||||
|
module.exports = class Color {
|
||||||
|
/**
|
||||||
|
* Color
|
||||||
|
* @param {string} color
|
||||||
|
*/
|
||||||
|
async getImage(color = `#FFFFFF`) {
|
||||||
|
const canvas = Canvas.createCanvas(2048, 2048);
|
||||||
|
const ctx = canvas.getContext(`2d`);
|
||||||
|
ctx.fillStyle = color;
|
||||||
|
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
||||||
|
return canvas.toBuffer();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue