From f63da01757a019e8f70388c9a428405f5c4007ea Mon Sep 17 00:00:00 2001 From: Maxime Zielony Date: Wed, 16 Dec 2020 20:38:14 +0100 Subject: [PATCH 1/2] add delay per frame --- src/GIFEncoder.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/GIFEncoder.js b/src/GIFEncoder.js index d0d79d2..50998cc 100644 --- a/src/GIFEncoder.js +++ b/src/GIFEncoder.js @@ -98,7 +98,7 @@ class GIFEncoder extends EventEmitter { this.readStreams = [] } - addFrame(input) { + addFrame(input, delay) { if (input && input.getImageData) { this.image = input.getImageData(0, 0, this.width, this.height).data } else { @@ -115,7 +115,7 @@ class GIFEncoder extends EventEmitter { } } - this.writeGraphicCtrlExt() + this.writeGraphicCtrlExt(delay) this.writeImageDesc() if (!this.firstFrame) { this.writePalette() @@ -322,7 +322,7 @@ class GIFEncoder extends EventEmitter { this.out.writeByte(0) } - writeGraphicCtrlExt() { + writeGraphicCtrlExt(delay) { this.out.writeByte(0x21) this.out.writeByte(0xf9) this.out.writeByte(4) @@ -343,7 +343,7 @@ class GIFEncoder extends EventEmitter { this.out.writeByte(0 | disp | 0 | transp) - this.writeShort(this.delay) + this.writeShort(!isNaN(delay) ? delay : this.delay) this.out.writeByte(this.transIndex) this.out.writeByte(0) } From c733b70886ffb70965308a35c48722b66041ee02 Mon Sep 17 00:00:00 2001 From: Maxime Zielony Date: Wed, 16 Dec 2020 20:45:18 +0100 Subject: [PATCH 2/2] Update README.md add addFrame delay param description --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e8bb713..555a517 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ const encoder = new GIFEncoder(720, 480, 'neuquant', true, 20) | Method | Parameter | Description | Notes | | :------------------: | :--------------: | :-------------------------------------: | :--------------------------------------------------------: | | `start` | n/a | Starts the encoder | n/a | -| `addFrame` | `Canvas Context` | Adds a frame to the GIF | n/a | +| `addFrame` | `Canvas Context`, _delay_ | Adds a frame to the GIF | `delay` (milliseconds) param is optional. Fallbacks to global delay if none given | | `setDelay` | number | Number of milliseconds to display frame | Can be set once or per frame | | `setFramesPerSecond` | number | Number of frames per second to display | Another way to set delay | | `setQuality` | number 1-30 | Neuquant quality | 1 is best/slowest |