Java idiomatic SDK for the Gemini Developer APIs and Vertex AI APIs
Generate, edit, upscale, recontextualize, and segment images using Imagen models.
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;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
});
}
});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
);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
});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-genaidocs