| name | sandbox-gif |
| description | Encode an animated GIF from RGBA frames inside a Code node or CodeAct action, with gifenc running in the guest |
GIF encoding in the sandbox
Specifier: @nodetool-ai/sandbox-gif. One module, gifenc. Import it at the top of the body.
Frames to a GIF
import { GIFEncoder, quantize, applyPalette } from "@nodetool-ai/sandbox-gif";
const gif = GIFEncoder();
for (const frame of inputs.frames) {
const palette = quantize(frame.rgba, 256);
const index = applyPalette(frame.rgba, palette);
gif.writeFrame(index, inputs.width, inputs.height, {
palette,
delay: frame.delay ?? 100
});
}
gif.finish();
return { bytes: gif.bytes() };
Each frame.rgba is a Uint8Array of length width * height * 4.
delay is milliseconds.
Gotchas
- You supply RGBA. Decode a still with
image.bytes / canvas, then
pack frames yourself.
gif.bytes() is a Uint8Array. Write it with
workspace.writeBytes.