CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-com-google-genai--google-genai

Java idiomatic SDK for the Gemini Developer APIs and Vertex AI APIs

Overview
Eval results
Files

image-operations.mddocs/

Image Operations

Generate, edit, upscale, recontextualize, and segment images using Imagen models.

Core Imports

import com.google.genai.types.GenerateImagesResponse;
import com.google.genai.types.GenerateImagesConfig;
import com.google.genai.types.EditImageResponse;
import com.google.genai.types.EditImageConfig;
import com.google.genai.types.UpscaleImageResponse;
import com.google.genai.types.UpscaleImageConfig;
import com.google.genai.types.Image;
import com.google.genai.types.GeneratedImage;
import com.google.genai.types.ReferenceImage;
import com.google.genai.types.RawReferenceImage;
import com.google.genai.types.MaskReferenceImage;

Generate Images

public GenerateImagesResponse generateImages(
    String model,
    String prompt,
    GenerateImagesConfig config);
GenerateImagesConfig config = GenerateImagesConfig.builder()
    .numberOfImages(4)
    .aspectRatio("1:1")
    .outputMimeType("image/jpeg")
    .build();

GenerateImagesResponse response = client.models.generateImages(
    "imagen-3.0-generate-002",
    "A serene mountain landscape at sunset",
    config
);

response.generatedImages().ifPresent(images -> {
    System.out.println("Generated " + images.size() + " images");
    for (GeneratedImage img : images) {
        img.image().ifPresent(image -> {
            // Save or process image
        });
    }
});

Edit Images

public EditImageResponse editImage(
    String model,
    String prompt,
    List<ReferenceImage> referenceImages,
    EditImageConfig config);
Image baseImage = Image.fromFile("path/to/image.jpg");
Image maskImage = Image.fromFile("path/to/mask.png");

List<ReferenceImage> references = ImmutableList.of(
    RawReferenceImage.builder()
        .referenceImage(baseImage)
        .referenceId(1)
        .build(),
    MaskReferenceImage.builder()
        .referenceImage(maskImage)
        .referenceId(2)
        .config(MaskReferenceConfig.builder()
            .maskMode(MaskReferenceMode.Known.MASK_MODE_FOREGROUND)
            .build())
        .build()
);

EditImageConfig config = EditImageConfig.builder()
    .editMode(EditMode.Known.EDIT_MODE_INPAINT_INSERTION)
    .numberOfImages(2)
    .build();

EditImageResponse response = client.models.editImage(
    "imagen-3.0-capability-001",
    "Add a bright sun in the sky",
    references,
    config
);

Upscale Images

public UpscaleImageResponse upscaleImage(
    String model,
    Image image,
    String upscaleFactor,
    UpscaleImageConfig config);
Image image = Image.fromFile("low-res-image.jpg");

UpscaleImageConfig config = UpscaleImageConfig.builder()
    .outputMimeType("image/jpeg")
    .enhanceInputImage(true)
    .build();

UpscaleImageResponse response = client.models.upscaleImage(
    "imagen-3.0-generate-002",
    image,
    "x2", // or "x4"
    config
);

response.generatedImage().ifPresent(image -> {
    // Process upscaled image
});

Image Configuration

public final class GenerateImagesConfig {
  public static Builder builder();

  public Optional<Integer> numberOfImages();
  public Optional<String> aspectRatio();
  public Optional<SafetySetting> safetySettings();
  public Optional<String> personGeneration();
  public Optional<String> outputMimeType();
  public Optional<HttpOptions> httpOptions();
}

Aspect Ratios: "1:1", "3:4", "4:3", "9:16", "16:9"

Install with Tessl CLI

npx tessl i tessl/maven-com-google-genai--google-genai

docs

batch-operations.md

caching.md

chat-sessions.md

client-configuration.md

content-generation.md

embeddings-tokens.md

error-handling.md

file-search-stores.md

files-management.md

image-operations.md

index.md

live-sessions.md

model-tuning.md

operations.md

tools-functions.md

types-reference.md

video-generation.md

tile.json