39 lines
967 B
JavaScript
39 lines
967 B
JavaScript
|
const GifEncoder = require("gif-encoder-2");
|
||
|
const { writeFile } = require("fs");
|
||
|
|
||
|
class HashLipsGiffer {
|
||
|
constructor(_canvas, _ctx, _fileName, _repeat, _quality, _delay) {
|
||
|
this.canvas = _canvas;
|
||
|
this.ctx = _ctx;
|
||
|
this.fileName = _fileName;
|
||
|
this.repeat = _repeat;
|
||
|
this.quality = _quality;
|
||
|
this.delay = _delay;
|
||
|
this.initGifEncoder();
|
||
|
}
|
||
|
|
||
|
initGifEncoder = () => {
|
||
|
this.gifEncoder = new GifEncoder(this.canvas.width, this.canvas.height);
|
||
|
this.gifEncoder.setQuality(this.quality);
|
||
|
this.gifEncoder.setRepeat(this.repeat);
|
||
|
this.gifEncoder.setDelay(this.delay);
|
||
|
};
|
||
|
|
||
|
start = () => {
|
||
|
this.gifEncoder.start();
|
||
|
};
|
||
|
|
||
|
add = () => {
|
||
|
this.gifEncoder.addFrame(this.ctx);
|
||
|
};
|
||
|
|
||
|
stop = () => {
|
||
|
this.gifEncoder.finish();
|
||
|
const buffer = this.gifEncoder.out.getData();
|
||
|
writeFile(this.fileName, buffer, (error) => {});
|
||
|
console.log(`Created gif at ${this.fileName}`);
|
||
|
};
|
||
|
}
|
||
|
|
||
|
module.exports = HashLipsGiffer;
|