nodejs-ai-image-generator
v0.1.1
Published
Generate images using [Ollama](https://ollama.com) image models from Node.js.
Maintainers
Readme
nodejs-ai-image-generator
Generate images using Ollama image models from Node.js.
Requirements
- Ollama running locally (default:
http://localhost:11434) - An image-capable model pulled, e.g.
ollama pull x/flux2-klein:4b(Experimental, currently available only on macOS. Follow this repo for feature updates :) )
Installation
npm install nodejs-ai-image-generatorUsage
import { generateImage } from 'nodejs-ai-image-generator';
const result = await generateImage({
prompt: 'a futuristic city at sunset, highly detailed, cinematic lighting',
// optional — defaults shown below
host: 'http://localhost:11434',
model: 'x/flux2-klein:4b',
options: {
seed: 42, // Don't pass if you want to generate different images every time
width: 512,
height: 512,
steps: 20,
negative_prompt: 'blurry, low quality',
},
});
// result.imageBase64 — base64-encoded PNG
// result.model — model name used
// result.createdAt — ISO timestampSave the image to disk:
import fs from 'fs';
fs.writeFileSync('output.png', Buffer.from(result.imageBase64, 'base64'));generateImage config
| Field | Type | Default | Description |
|---|---|---|---|
| prompt | string | — | Image prompt (required) |
| host | string | http://localhost:11434 | Ollama host URL |
| model | string | x/flux2-klein:4b | Model to use |
| options.seed | number | — | Reproducibility seed |
| options.width | number | — | Output width in px |
| options.height | number | — | Output height in px |
| options.steps | number | — | Diffusion steps |
| options.negative_prompt | string | — | Things to avoid |
Batch generation
Use batchGenerateImages to generate images for multiple prompts. Images are generated one by one in sequence.
import { batchGenerateImages } from 'nodejs-ai-image-generator';
const batch = await batchGenerateImages({
prompts: [
'a sunset over mountains',
'a futuristic city at night',
],
countPerPrompt: 3, // generate 3 images per prompt (default: 1)
onProgress: (completed, total) => {
console.log(`Progress: ${completed}/${total} images generated`);
},
// optional — same host, model, options as generateImage
host: 'http://localhost:11434',
model: 'x/flux2-klein:4b',
options: {
width: 512,
height: 512,
steps: 20,
negative_prompt: 'blurry, low quality',
},
});
for (const { prompt, results } of batch) {
results.forEach((result, i) => {
fs.writeFileSync(`output-${i}.png`, Buffer.from(result.imageBase64, 'base64'));
});
}Batch config
| Field | Type | Default | Description |
|---|---|---|---|
| prompts | string[] | — | List of image prompts (required) |
| countPerPrompt | number | 1 | Number of images to generate per prompt |
| onProgress | (completed: number, total: number) => void | — | Called after each image finishes |
| host | string | http://localhost:11434 | Ollama host URL |
| model | string | x/flux2-klein:4b | Model to use |
| options | GenerateImageOptions | — | Same options as generateImage |
License
MIT
