A faster GIF Encoder for Node JS using Rust
This library is a fork of @tyrone-sudeium/napi-gif-encoder.
I made this fork because the original is not currently being maintained, and I
needed a new feature added.
npm install @gomander/napi-gif-encoder
Linux x64/aarch64 | Windows x64 |
---|---|
✓ | ✓ |
Theoretically, any version of Node that supports N-API should work. The CI is validated against LTS versions of Node:
Node 18 | Node 20 | Node 22 |
---|---|---|
✓ | ✓ | ✓ |
If you are using this as a dependency, since we use N-API, you don't need to build anything! However, if you want to tinker with this code or submit a PR, read below.
- Install latest
Rust
. Suggest using rustup. If on Windows, use WSL for an easier time. - Install
NodeJS@18+
. LTS versions suggested. - Install
yarn@1.x
. - Install dependencies with
yarn
.
You can then compile the rust code with yarn build
.
After running yarn build
, you will see a
napi-gif-encoder.<PLATFORM>.node
file in the project root.
This is the native addon built from lib.rs.
yarn
yarn build
cd sample
yarn
node .
You'll then see output.gif
, which was encoded using the rust encoder.
You can compare this to a Node-based GIF encoder by running node . --js
.
This data is a ten-run average of the time it took to encode the sample project
on a Ryzen 7 7800X3D.
Historical data from the original author also suggests that this library scales
better with more cores than Node-based GIF encoders.
Encoder | Time |
---|---|
gif-encoder-2 |
692ms |
napi-gif-encoder |
250ms |