An image processing tool in Rust with a dynamically loaded plugin architecture: plugins are compiled as separate shared libraries (.so / .dll) and loaded at runtime, so new effects can be added without recompiling the host application.
Highlights:
- Runtime plugin loading via dynamic libraries — cross-platform (
.soon Linux,.dllon Windows) - Stable plugin ABI between the host CLI and independently compiled plugins
- Parameterized plugins: settings are passed from external files at load time
- Example plugins included (blur, mirror) as templates for writing new ones
Stack: Rust · Dynamic loading / FFI · CLI (Clap)
image-processor- CLI that loads a plugin and applies it to an input image.blur-plugin- Example blur plugin.mirror-plugin- Example mirror plugin.plugin-parameters- Sample parameter files for the plugins.
- Rust toolchain (2024 edition)
- Supported image format:
png
cargo build -p blur-plugin
cargo build -p mirror-plugin
cargo run -p image-processor -- \
--input images/input/photo.png \
--output images/output/photo.png \
--plugin libblur_plugin \
--params plugin-parameters/blur.txt- Plugins are loaded from
target/debugby default; override with--plugin-path. - Plugin name can be passed without extension; the CLI appends
.soon Linux and.dllon Windows. - Parameters are read from a text file and passed to the plugin as a UTF-8 string.