I wanted to make image generation bots, but wasn't quite happy with any of the options for generating images on a server, and then got quite excited to make my own tool. Having worked as a tech artist, there were also various functions I wanted to combine into one tool. Like being able to easily chain functions, and have them work only on specific channels.

Initially it was written in just typescript and using wasm skia canvas. But then I started using Rust to do the pixel operations, and just use typescript for the orchestration. I was then also able to drop the canvas dependency. Replacing it with rust libaries for text, png, svg, and vector drawing.

opsCanvas runs fully on the CPU with webassembly, and should run everywhere deno runs.

It's a work in progress, and I keep adding functions as I need them.

The functions are mostly covered by unit tests, and docs get autogenerated, with examples and custom types extraction,