public abstract class ImageGenerator

  1. Object
  2. ImageGenerator

Cloud-first image generation. The openai and replicate factory methods cover the two dominant managed endpoints. On-device generation via Core ML / ONNX Stable Diffusion is provided separately by the optional cn1-ai-stablediffusion cn1lib; see onDevice().

ImageGenerator.openai(KeyStore.get("openai_key"))
    .generate(new GenerateImageRequest("A cat in a sombrero").setSize("1024x1024"))
    .ready(img -> imageComponent.setIcon(img));

Constructors

public ImageGenerator()

Methods

public static ImageGenerator openai(String apiKey)Creates an OpenAI image generator talking to the public endpoint.
public static ImageGenerator openAiCompatible(String baseUrl, String apiKey)Creates a generator for any endpoint that speaks the OpenAI image generation API – most usefully your own server, holding the provider key and proxying the call, so the device carries nothing more than a short-lived token of yours.
public static ImageGenerator replicate(String apiKey)Replicate runs a wide catalog of third-party image models (SDXL, Flux, etc.) behind a uniform REST API.
public static ImageGenerator onDevice()On-device generator.
public abstract AsyncResource<Image> generate(GenerateImageRequest req)Generates an image without blocking the EDT.

Inherited methods

Constructor details

ImageGenerator

public ImageGenerator()

Method details

openai

public static ImageGenerator openai(String apiKey)

Creates an OpenAI image generator talking to the public endpoint.

Shipping this means the key travels with the app, and a key the running app can read is one its user can extract. For a released build, put the key on your server and point openAiCompatible(String, String) at it instead.

Parameters

apiKey String
OpenAI API key

Returns

configured generator

openAiCompatible

public static ImageGenerator openAiCompatible(String baseUrl, String apiKey)
Creates a generator for any endpoint that speaks the OpenAI image generation API – most usefully your own server, holding the provider key and proxying the call, so the device carries nothing more than a short-lived token of yours.

Parameters

baseUrl String
endpoint root, for example https://api.example.com/ai/v1; required, because falling back to the public endpoint would send your proxy’s token and your user’s prompt to a third party
apiKey String
credential for that endpoint, or empty when it needs none

Returns

configured generator

Throws

IllegalArgumentException
when baseUrl is null or empty

replicate

public static ImageGenerator replicate(String apiKey)
Replicate runs a wide catalog of third-party image models (SDXL, Flux, etc.) behind a uniform REST API. Pass the API token from https://replicate.com/account.

Parameters

apiKey String
Replicate API token

Returns

configured generator

onDevice

public static ImageGenerator onDevice()
On-device generator. Requires the optional cn1lib cn1-ai-stablediffusion; without it this returns an AsyncResource that completes with UnsupportedOperationException.

Returns

optional on-device generator or an unsupported stub

generate

public abstract AsyncResource<Image> generate(GenerateImageRequest req)
Generates an image without blocking the EDT.

Parameters

req GenerateImageRequest
provider-neutral generation request

Returns

asynchronous generated image