Skip to content

Repository files navigation

OmniImage

Go CIGo LintGo SASTGo Report CardDocsDocsVisualizationLicense

Unified Go library for image generation across multiple providers.

Supported Providers

ProviderModelsGenerateEditVariationsUpscale
OpenAIDALL-E 2, DALL-E 3YesYesYesNo
Fal AIFLUX Pro/Dev/Schnell, SDXLYesNoNoYes

Installation

go get github.com/plexusone/omniimage

Quick Start

package main
import (
"context""fmt""log""github.com/plexusone/omniimage""github.com/plexusone/omniimage/provider"
)
funcmain() {
// Create client with OpenAI providerclient, err:=omniimage.NewClient(omniimage.ClientConfig{
Providers: []omniimage.ProviderConfig{
{
Provider: omniimage.ProviderNameOpenAI,
APIKey: "sk-...", // or use OPENAI_API_KEY env var
},
},
})
iferr!=nil {
log.Fatal(err)
}
deferclient.Close()
// Generate an imageresp, err:=client.Generate(context.Background(), &provider.GenerateRequest{
Model: omniimage.ModelDALLE3,
Prompt: "A serene mountain landscape at sunset",
Size: provider.Size1024x1024,
Quality: provider.QualityHD,
})
iferr!=nil {
log.Fatal(err)
}
fmt.Printf("Generated image: %s\n", resp.Images[0].URL)
}

Providers

OpenAI (DALL-E)

client, _:=omniimage.NewClient(omniimage.ClientConfig{
Providers: []omniimage.ProviderConfig{
{
Provider: omniimage.ProviderNameOpenAI,
APIKey: "sk-...", // or OPENAI_API_KEY env var
},
},
})
// DALL-E 3 - high quality, single imageresp, _:=client.Generate(ctx, &provider.GenerateRequest{
Model: omniimage.ModelDALLE3,
Prompt: "A futuristic cityscape",
Size: provider.Size1024x1024,
Quality: provider.QualityHD,
Style: provider.StyleVivid,
})
// DALL-E 2 - multiple images, edit, variationsresp, _:=client.Generate(ctx, &provider.GenerateRequest{
Model: omniimage.ModelDALLE2,
Prompt: "A cute robot",
N: 4,
Size: provider.Size512x512,
})

Fal AI (FLUX, Stable Diffusion)

client, _:=omniimage.NewClient(omniimage.ClientConfig{
Providers: []omniimage.ProviderConfig{
{
Provider: omniimage.ProviderNameFal,
APIKey: "...", // or FAL_KEY env var
},
},
})
// FLUX Pro - high qualityresp, _:=client.Generate(ctx, &provider.GenerateRequest{
Model: omniimage.ModelFluxPro,
Prompt: "A photorealistic portrait",
Size: provider.Size1024x1024,
})
// FLUX Schnell - fast generationresp, _:=client.Generate(ctx, &provider.GenerateRequest{
Model: omniimage.ModelFluxSchnell,
Prompt: "Abstract art",
N: 4,
})
// Upscale an imageupscaled, _:=client.Upscale(ctx, &provider.UpscaleRequest{
Model: omniimage.ModelClarityUpscaler,
Image: "https://example.com/image.png",
Scale: 2,
})

API Reference

GenerateRequest

FieldTypeDescription
ModelstringModel ID (required)
PromptstringText description (required)
NegativePromptstringWhat to avoid (Fal only)
NintNumber of images
SizeImageSizeImage dimensions
QualityImageQuality"standard" or "hd"
StyleImageStyle"vivid" or "natural"
Seed*int64For reproducibility
Steps*intInference steps (Fal)
GuidanceScale*float64Prompt adherence (Fal)

Image Sizes

  • Size256x256, Size512x512, Size1024x1024
  • Size1024x1792 (portrait), Size1792x1024 (landscape)
  • Size768x1024, Size1024x768

Models

OpenAI:

  • ModelDALLE3 - DALL-E 3 (highest quality, n=1 only)
  • ModelDALLE2 - DALL-E 2 (edit, variations support)

Fal AI:

  • ModelFluxPro - FLUX Pro (high quality)
  • ModelFluxDev - FLUX Dev (balanced)
  • ModelFluxSchnell - FLUX Schnell (fast)
  • ModelSDXL - Stable Diffusion XL
  • ModelClarityUpscaler - Image upscaling

Environment Variables

VariableProviderDescription
OPENAI_API_KEYOpenAIAPI key for DALL-E
FAL_KEYFal AIAPI key for Fal

License

MIT

About

Unified Go library for image generation across multiple providers.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages