Skip to content

enzoftware/silvestre

Repository files navigation

Silvestre

Cross-platform image processing library written in Rust.

Run the same filters natively on CLI, Android, iOS, Flutter, and WebAssembly from a single codebase.

Spiritual successor to an old Java/C# college project, rebuilt from scratch with a modern Rust core.

Architecture

 CLI    Flutter    iOS     Web    Android
  │    (dart:ffi)  (C FFI) (WASM) (JNI/NDK)
  │        │         │       │       │
  └────────┴─────────┴───────┴───────┘
                     │
            silvestre-ffi (C ABI)
                     │
            silvestre-core (Pure Rust)

silvestre-core contains all image processing logic as a pure Rust library. silvestre-ffi exposes it through a C ABI so every platform can consume it via its native FFI mechanism.

Features

Filters

Canny edge detection, Median, Gaussian blur, Sobel, Sharpen, Box blur

Effects

Grayscale, Sepia, Invert, Brightness, Contrast

Transforms

Resize (nearest-neighbor & bilinear), Rotate, Mirror/Flip, Crop

Analysis

Histogram computation, Image statistics

Image I/O

PNG, JPEG, BMP, WebP — load and save via the image crate

Project Structure

silvestre/
├── silvestre-core/        # Pure Rust image processing library
├── silvestre-ffi/         # C ABI foreign function interface
├── silvestre-cli/         # Command-line tool
├── silvestre-wasm/        # WebAssembly bindings (planned)
├── silvestre-flutter/     # Flutter package via flutter_rust_bridge (planned)
└── tests/
    └── fixtures/          # Test images

Getting Started

Prerequisites

Build

cargo build --workspace

Test

cargo test --workspace

CLI Usage

# Apply a filter
cargo run -p silvestre-cli -- apply median --input photo.jpg --output out.jpg

# List available filters
cargo run -p silvestre-cli -- list

Rust API

use silvestre_core::{SilvestreImage, Filter};

// Load an image
let img = SilvestreImage::load("photo.png")?;

// Apply a filter (once implemented)
// let result = MedianFilter::new(3).apply(&img)?;

// Save the result
// result.save("output.png")?;

Platform Targets

Platform Mechanism Status
CLI Native binary In progress
WebAssembly wasm-bindgen + wasm-pack Planned
Flutter flutter_rust_bridge v2 Planned
Android Rust → C ABI → JNI (NDK) Planned
iOS Rust → C ABI → Swift interop Planned

Tech Stack

Component Technology
Core library Rust
Image codec image 0.25
Error handling thiserror 2
CLI clap 4
C header gen cbindgen
WASM wasm-bindgen
Flutter bridge flutter_rust_bridge v2
Testing cargo test + proptest
Benchmarks criterion

Roadmap

See PLAN.md for the full implementation plan.

  1. Core library — image types, filters, effects, transforms, analysis
  2. CLI tool — apply filters from the command line
  3. C FFI layer — stable ABI for platform bindings
  4. WebAssembly — run in the browser
  5. Flutter package — Android, iOS, and desktop via flutter_rust_bridge
  6. Polish & release — CI, docs, publish to crates.io / pub.dev / npm

License

MIT

About

A blazingly fast, cross-platform image processing library. Built on a highly optimized Rust core, Silvestre delivers high-performance image filters and graphical actions to Flutter (Dart), Android (Kotlin), and iOS (Swift) with zero-overhead FFI bindings.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors