How to use canvas-constructor - 10 common examples

To help you get started, we’ve selected a few canvas-constructor examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github AdityaTD / PenguBot / src / commands / Profiles / rank.js View on Github external
.getAll(member.guild.id, { index: "guildID" })
            .orderBy(r.desc("xp"))
            .run();

        const rank = data.findIndex(i => i.id.split(".")[1] === member.user.id) + 1;

        const bgName = member.user.settings.profilebg;
        const bgImg = await fs.readFile(`../assets/profiles/backgrounds/${bgName}.png`);
        const template = await fs.readFile(`../assets/profiles/backgrounds/template.png`);
        const pbar = await fs.readFile(`../assets/profiles/backgrounds/progressbar.png`);
        const avatar = await get(member.user.displayAvatarURL({ format: "png", sze: 256 })).then(res => res.body).catch(e => {
            Error.captureStackTrace(e);
            return e;
        });

        const render = await new Canvas(1000, 300)
            // Initializing and Text
            .addImage(bgImg, 30, 0, 300, 300)
            .addImage(template, 10, 0, 1000, 300)
            .setTextFont("41.67px Roboto, NotoEmoji")
            .setColor("#212121")
            .addResponsiveText(member.user.username, 570, 86, 260)
            .setTextFont("25px Roboto")
            .setColor("#404040")
            .addText(`#${member.user.discriminator}`, 570, 110)
            .save()
            // Other Text
            .setColor("#212121")
            .setTextFont("33.33px Roboto")
            .addText(`Server Rank: #${rank.toLocaleString()}`, 568, 158)
            .addText(`Server Level: ${lvl.toLocaleString()}`, 568, 189)
            .save()
github shidoitsuka / another-miku-bot / commands / Utility / color.js View on Github external
async function color() {
    // prettier-ignore
    return new Canvas(200, 50).setColor(`#${args[0]}`).addRect(0, 0, 200, 50).toBufferAsync();
  }
github AdityaTD / PenguBot / monitors / profiles.js View on Github external
timeout.add(msg.author.id);
        setTimeout(() => timeout.delete(msg.author.id), 45000);

        // Generate Level Up Images on Level Up
        if (oldLvl !== newLvl) {
            if (!msg.guild.settings.levelup) return;
            if (msg.guild.settings.leveltype !== "user") return;
            if (!msg.channel.postable) return;
            const bgName = msg.author.settings.profilebg;
            const bgImg = await fs.readFile(`${process.cwd()}/assets/profiles/bg/${bgName}.png`);
            const avatar = await get(msg.author.displayAvatarURL({ format: "png", size: 128 })).then(res => res.body).catch(e => {
                Error.captureStackTrace(e);
                return e;
            });
            const img = await new Canvas(100, 100)
                .addImage(bgImg, 0, 0, 530, 530)
                .addImage(avatar, 22, 22, 57, 57)
                .toBufferAsync();
            msg.sendMessage(`🆙 | **${msg.author.tag} has leveled up to Level ${newLvl}!**`, { files: [{ attachment: img, name: `${msg.author.id}.png` }] });
        }
    }
github shidoitsuka / another-miku-bot / commands / brain.js View on Github external
async function brainy() {
    const img = await fsn.readFile('./assets/brain4.png');
    const joined = args.join(" ").split(";");
    const first = joined[0];
    const second = joined[1];
    const third = joined[2];
    const fourth = joined[3];
    return new Canvas(400, 500)
      .addImage(img, 0, 0, 400, 500)
      .setColor('#151515')
      .setTextFont('15px whatever')
      .setTextAlign('center')
      .addText(first, 100, 63)
      .addText(second, 100, 188)
      .addText(third, 100, 313)
      .addText(fourth, 100, 438)
      .toBufferAsync();
  }
github AdityaTD / PenguBot / commands / Utilities / weather.js View on Github external
const temperature = Math.round(wRes.currently.temperature);
            const humidity = Math.round(wRes.currently.humidity * 100);

            let theme = "light";
            let fontColor = "#FFFFFF";
            if (icon === "snow" || icon === "sleet" || icon === "fog") {
                theme = "dark";
                fontColor = "#444444";
            }

            const bg = await this.getBase(icon);
            const cond = await fs.readFile(`${process.cwd()}/assets/weather/icons/${theme}/${icon}.png`);
            const hum = await fs.readFile(`${process.cwd()}/assets/weather/icons/${theme}/humidity.png`);
            const precip = await fs.readFile(`${process.cwd()}/assets/weather/icons/${theme}/precip.png`);

            const img = await new Canvas(400, 180)
                .addImage(bg, 0, 0, 400, 180)
                .setColor(fontColor)
                .setTextFont("20px Roboto")
                .addText(city.long_name ? city.long_name : "Unknown", 35, 50)
                .setTextFont("16px Roboto")
                .addText(state.long_name ? state.long_name : "", 35, 72.5)
                .setTextFont("48px Roboto Mono")
                .addText(`${temperature}°`, 35, 140)
                .addImage(cond, 325, 31, 48, 48)
                .addImage(hum, 358, 88, 13, 13)
                .addImage(precip, 358, 108, 13, 13)
                .setTextAlign("right")
                .setTextFont("16px Roboto")
                .addText(condition, 370, 142)
                .setTextFont("16px 'Roboto Condensed'")
                .addText(`${humidity}%`, 353, 100)
github SharifPoetra / yumeko / commands / util / weather.js View on Github external
}).then(x => x.body);
    const condition = wRes.currently.summary;
    const { icon } = wRes.currently;
    const chanceofrain = Math.round((wRes.currently.precipProbability * 100) / 5) * 5;
    const temperature = Math.round(wRes.currently.temperature);
    const humidity = Math.round(wRes.currently.humidity * 100);
    let theme = "light";
    if (icon === "snow" || icon === "sleet" || icon === "fog") {
      theme = "dark";
      fontColor = "#444444";
    }
    const bg = await client.snek.get(getBase(icon)).then(x => x.body);
    const cond = await client.snek.get(`${link}/assets/weather/icons/${theme}/${icon}.png`).then(x => x.body);
    const hum = await client.snek.get(`${link}/assets/weather/icons/${theme}/humidity.png`).then(x => x.body);
    const precip = await client.snek.get(`${link}/assets/weather/icons/${theme}/precip.png`).then(x => x.body);
    const img = new Canvas(400, 180)
      .addImage(bg, 0, 0, 400, 180)
      .setColor("#FFFFFF")
      .setTextFont("20px Roboto")
      .addText(city.long_name ? city.long_name : "Unknown", 35, 50)
      .setTextFont("16px Roboto")
      .addText(state.long_name ? state.long_name : "", 35, 72.5)
      .setTextFont("48px Roboto Mono")
      .addText(`${temperature}°`, 35, 140)
      .addImage(cond, 325, 31, 48, 48)
      .addImage(hum, 358, 88, 13, 13)
      .addImage(precip, 358, 108, 13, 13)
      .setTextAlign("right")
      .setTextFont("16px Roboto")
      .addText(condition, 370, 142)
      .setTextFont("16px 'Roboto Condensed'")
      .addText(`${humidity}%`, 353, 100)
github SharifPoetra / yumeko / commands / fun / respect.js View on Github external
module.exports.run = async (client, msg, args) => {
  let user = msg.mentions.users.first() || client.users.get(args[0]);
  if (!user) user = msg.author;
  try {
    const paintMess = await msg.channel.send("🖌️ Painting...");
    const plate = await readFile("./assets/images/image_respects.png");
    const png = user.avatarURL.replace(/\.(gif|jpg|png|jpeg)\?size=(.+)/g, ".png?size=128");
    const { body } = await client.snek.get(png);
    const giveRespect = new Canvas(720, 405)
      .addRect(0, 0, 720, 405)
      .setColor("#000000")
      .addImage(body, 110, 45, 90, 90)
      .addImage(plate, 0, 0, 720, 405)
      .toBuffer();
    await paintMess.delete();
    return msg.channel.send(new Attachment(giveRespect, "paid-respects.png"))
      .then(x => x.react("🇫"));
  } catch (e) {
    return msg.channel.send(`Oh no an error occured :( \`${e.message}\` try again later`);
  }
};
github AdityaTD / PenguBot / commands / Image Manipulation / lio.js View on Github external
async run(msg, [user = msg.author]) {
        const lio = await fs.readFile(`${process.cwd()}/assets/manipulation/lio.png`);
        const avi = await get(user.displayAvatarURL({ format: "png", sze: 128 })).then(res => res.body)
            .catch(() => null);

        if (!avi) return msg.reply(msg.language.get("ER_TRY_AGAIN"));
        const img = await new Canvas(512, 512)
            .addImage(lio, 0, 0, 512, 512)
            .addImage(avi, 160, 25.5, 250, 250, { type: "round", radius: 120 })
            .toBufferAsync();
        return msg.channel.sendFile(img);
    }
github SharifPoetra / yumeko / commands / fun / beautiful.js View on Github external
module.exports.run = async (client, msg, args) => {
  let user = msg.mentions.users.first() || client.users.get(args[0]);
  if (!user) user = msg.author;
  try {
    const paintMess = await msg.channel.send("🖌️ Painting...");
    const plate = await readFile("./assets/images/plate_beautiful.png");
    const png = user.avatarURL.replace(/\.gif.+/g, ".png");
    const { body } = await client.snek.get(png);
    const getBeautiful = new Canvas(634, 675)
      .setColor("#000000")
      .addRect(0, 0, 634, 675)
      .addImage(body, 423, 45, 168, 168)
      .addImage(body, 426, 382, 168, 168)
      .addImage(plate, 0, 0, 634, 675)
      .toBuffer();
    await paintMess.delete();
    return msg.channel.send(new Attachment(getBeautiful, "beautiful.jpg"));
  } catch (e) {
    return msg.channel.send(`Oh no an error occured :( \`${e.message}\` try again later`);
  }
};
github SharifPoetra / yumeko / commands / fun / wanted.js View on Github external
module.exports.run = async (client, msg, args) => {
  let user = msg.mentions.users.first() || client.users.get(args[0]);
  if (!user) user = msg.author;
  try {
    const paintMess = await msg.channel.send("🖌️ Painting...");
    const plate = await readFile("./assets/images/plate_wanted.jpg");
    const png = user.avatarURL.replace(/\.gif.+/g, ".png");
    const { body } = await client.snek.get(png);
    const getWanted = new Canvas(400, 562)
      .setColor("#000000")
      .addRect(0, 0, 400, 562)
      .addImage(plate, 0, 0, 400, 562)
      .addImage(body, 86, 178, 228, 228)
      .toBuffer();
    await paintMess.delete();
    return msg.channel.send(new Attachment(getWanted, "wanted.png"));
  } catch (e) {
    return msg.channel.send(`Oh no an error occured :( \`${e.message}\` try again later`);
  }
};

canvas-constructor

A ES6 class for node-canvas with built-in functions and chained methods.

MIT
Latest version published 6 months ago

Package Health Score

80 / 100
Full package analysis