GIF Encoder for Node JS that tries to have reasonable performance.
This library is a fork of @tyrone-sudeium/napi-gif-encoder.
I made this fork because the original is not currently being maintained.
npm install @gomander/napi-gif-encoder
Linux x64/aarch64 | macOS x64/aarch64 | Windows x64 |
---|---|---|
✓ | ✓ | ✓ |
Theoretically, any version of Node.js that supports N-API should work. The CI is validated against LTS versions of Node:
Node 18 | Node 20 |
---|---|
✓ | ✓ |
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@20+
. LTS versions suggested. - Install
[email protected]
.
You can then compile the rust code with:
yarn build
After yarn build/npm run build
command, you can see
napi-gif-encoder.[darwin|win32|linux].node
file in 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 |
- Add tests