Update blink.js

main
Simon 4 years ago committed by GitHub
parent 4be539163d
commit 2f5d1a9dad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,34 +1,28 @@
const Canvas = require(`canvas`); const Canvas = require(`canvas`);
const GIFEncoder = require(`gifencoder`); const GIFEncoder = require(`gifencoder`);
module.exports = class Blink { module.exports = class Blink {
/**
* Blink async getImage( ...images) {
* @param {image} image1 console.log(images)
* @param {image} image2 if (!images || images.length < 2) throw new Error(`You must provide an image as a first argument.`);
* @param {number} timeout
*/ const GIF = new GIFEncoder(480, 480)
async getImage(image1, image2, timeout = 1000) {
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.start();
GIF.setRepeat(0); GIF.setRepeat(0);
GIF.setDelay(timeout); GIF.setDelay(1000);
GIF.setTransparent(); GIF.setTransparent();
const canvas = Canvas.createCanvas(480, 480); const canvas = Canvas.createCanvas(480, 480);
const ctx = canvas.getContext(`2d`);
ctx.clearRect(0, 0, 480, 480); for (const image of images) {
ctx.drawImage(img, 0, 0, 480, 480); const base = await Canvas.loadImage(image);
GIF.addFrame(ctx);
const ctx2 = canvas.getContext(`2d`); const ctx2 = canvas.getContext(`2d`);
ctx2.clearRect(0, 0, 480, 480); ctx2.clearRect(0, 0, 480, 480);
ctx2.drawImage(base, 0, 0, 480, 480); ctx2.drawImage(base, 0, 0, 480, 480);
GIF.addFrame(ctx2); GIF.addFrame(ctx2);
}
GIF.finish(); GIF.finish();
return GIF.out.getData(); return GIF.out.getData();
} }

Loading…
Cancel
Save