Core Concepts
FloImg is built around three simple operations: Generate, Transform, and Save.
The Workflow Model
Section titled “The Workflow Model”Every FloImg workflow follows this pattern:
Generate → Transform (optional, repeatable) → Save- Generate: Create an image from parameters (charts, diagrams, QR codes, etc.)
- Transform: Modify the image (resize, blur, convert format, etc.)
- Save: Output to filesystem, S3, or other storage
Generators
Section titled “Generators”Generators create images from structured data. Each generator is a plugin with its own parameter schema.
const image = await floimg.generate({ generator: 'quickchart', // Which generator to use params: { ... } // Generator-specific parameters});Available generators:
quickchart- Charts via Chart.jsmermaid- Diagrams and flowchartsqr- QR codesd3- D3 data visualizationsscreenshot- Website screenshots
Transforms
Section titled “Transforms”Transforms modify existing images. They can be chained:
let image = await floimg.generate({ ... });
// Chain multiple transformsimage = await floimg.transform(image, { op: 'resize', params: { width: 800 } });image = await floimg.transform(image, { op: 'blur', params: { sigma: 2 } });image = await floimg.transform(image, { op: 'convert', params: { format: 'webp' } });Available transforms:
resize- Change dimensionsblur- Apply gaussian blursharpen- Sharpen edgesconvert- Change format (PNG, JPEG, WebP, etc.)rotate- Rotate by degreescrop- Crop to region
The Image Object
Section titled “The Image Object”When you generate or transform, you get an image object (a Blob) that can be:
- Passed to another transform
- Saved to storage
- Converted to a Buffer or base64
const image = await floimg.generate({ ... });
// Get as Bufferconst buffer = await image.arrayBuffer();
// Get as base64const base64 = btoa(String.fromCharCode(...new Uint8Array(buffer)));Storage Adapters
Section titled “Storage Adapters”FloImg can save to different storage backends:
// Local filesystemawait floimg.save(image, './output.png');
// S3 bucketawait floimg.save(image, 's3://bucket/path/image.png');
// Custom adapterfloimg.registerStorage(myCustomAdapter());await floimg.save(image, 'custom://path/image.png');Deterministic Execution
Section titled “Deterministic Execution”FloImg is designed for deterministic execution:
Same inputs → Same outputs
This makes FloImg ideal for:
- CI/CD pipelines
- Automated reporting
- AI agent workflows (MCP)
- Testing and QA
Unlike AI image generation, FloImg workflows produce identical results every time (when using non-AI generators).
Next Steps
Section titled “Next Steps”- SDK Reference - Detailed API documentation
- Plugins - Explore available generators
- MCP Integration - Use with AI agents