Skip to content

Commit aa97aa3

Browse files
authored
Improve imagen Java API (#6712)
- Make the `ImagenGenerationConfig.Builder` follow the builder pattern - Mark companion object `ImagenImageFormat` methods as @JvmStatic for easier access
1 parent e37be5a commit aa97aa3

File tree

3 files changed

+48
-7
lines changed

3 files changed

+48
-7
lines changed

firebase-vertexai/api.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,11 @@ package com.google.firebase.vertexai.type {
428428
public static final class ImagenGenerationConfig.Builder {
429429
ctor public ImagenGenerationConfig.Builder();
430430
method public com.google.firebase.vertexai.type.ImagenGenerationConfig build();
431+
method public com.google.firebase.vertexai.type.ImagenGenerationConfig.Builder setAddWatermark(boolean addWatermark);
432+
method public com.google.firebase.vertexai.type.ImagenGenerationConfig.Builder setAspectRatio(com.google.firebase.vertexai.type.ImagenAspectRatio aspectRatio);
433+
method public com.google.firebase.vertexai.type.ImagenGenerationConfig.Builder setImageFormat(com.google.firebase.vertexai.type.ImagenImageFormat imageFormat);
434+
method public com.google.firebase.vertexai.type.ImagenGenerationConfig.Builder setNegativePrompt(String negativePrompt);
435+
method public com.google.firebase.vertexai.type.ImagenGenerationConfig.Builder setNumberOfImages(int numberOfImages);
431436
field public Boolean? addWatermark;
432437
field public com.google.firebase.vertexai.type.ImagenAspectRatio? aspectRatio;
433438
field public com.google.firebase.vertexai.type.ImagenImageFormat? imageFormat;
@@ -441,6 +446,7 @@ package com.google.firebase.vertexai.type {
441446

442447
public final class ImagenGenerationConfigKt {
443448
method @com.google.firebase.vertexai.type.PublicPreviewAPI public static com.google.firebase.vertexai.type.ImagenGenerationConfig imagenGenerationConfig(kotlin.jvm.functions.Function1<? super com.google.firebase.vertexai.type.ImagenGenerationConfig.Builder,kotlin.Unit> init);
449+
method public static void xx();
444450
}
445451

446452
@com.google.firebase.vertexai.type.PublicPreviewAPI public final class ImagenGenerationResponse<T> {
@@ -453,6 +459,8 @@ package com.google.firebase.vertexai.type {
453459
@com.google.firebase.vertexai.type.PublicPreviewAPI public final class ImagenImageFormat {
454460
method public Integer? getCompressionQuality();
455461
method public String getMimeType();
462+
method public static com.google.firebase.vertexai.type.ImagenImageFormat jpeg(Integer? compressionQuality = null);
463+
method public static com.google.firebase.vertexai.type.ImagenImageFormat png();
456464
property public final Integer? compressionQuality;
457465
property public final String mimeType;
458466
field public static final com.google.firebase.vertexai.type.ImagenImageFormat.Companion Companion;

firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationConfig.kt

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ package com.google.firebase.vertexai.type
2626
* @param imageFormat The file format/compression of the generated images.
2727
* @param addWatermark Adds an invisible watermark to mark the image as AI generated.
2828
*/
29+
import kotlin.jvm.JvmField
30+
2931
@PublicPreviewAPI
3032
public class ImagenGenerationConfig(
3133
public val negativePrompt: String? = null,
@@ -39,13 +41,6 @@ public class ImagenGenerationConfig(
3941
*
4042
* This is mainly intended for Java interop. For Kotlin, use [imagenGenerationConfig] for a more
4143
* idiomatic experience.
42-
*
43-
* @property negativePrompt See [ImagenGenerationConfig.negativePrompt].
44-
* @property numberOfImages See [ImagenGenerationConfig.numberOfImages].
45-
* @property aspectRatio See [ImagenGenerationConfig.aspectRatio].
46-
* @property imageFormat See [ImagenGenerationConfig.imageFormat]
47-
* @property addWatermark See [ImagenGenerationConfig.addWatermark]
48-
* @see [imagenGenerationConfig]
4944
*/
5045
public class Builder {
5146
@JvmField public var negativePrompt: String? = null
@@ -54,6 +49,31 @@ public class ImagenGenerationConfig(
5449
@JvmField public var imageFormat: ImagenImageFormat? = null
5550
@JvmField public var addWatermark: Boolean? = null
5651

52+
/** See [ImagenGenerationConfig.negativePrompt]. */
53+
public fun setNegativePrompt(negativePrompt: String): Builder = apply {
54+
this.negativePrompt = negativePrompt
55+
}
56+
57+
/** See [ImagenGenerationConfig.numberOfImages]. */
58+
public fun setNumberOfImages(numberOfImages: Int): Builder = apply {
59+
this.numberOfImages = numberOfImages
60+
}
61+
62+
/** See [ImagenGenerationConfig.aspectRatio]. */
63+
public fun setAspectRatio(aspectRatio: ImagenAspectRatio): Builder = apply {
64+
this.aspectRatio = aspectRatio
65+
}
66+
67+
/** See [ImagenGenerationConfig.imageFormat]. */
68+
public fun setImageFormat(imageFormat: ImagenImageFormat): Builder = apply {
69+
this.imageFormat = imageFormat
70+
}
71+
72+
/** See [ImagenGenerationConfig.addWatermark]. */
73+
public fun setAddWatermark(addWatermark: Boolean): Builder = apply {
74+
this.addWatermark = addWatermark
75+
}
76+
5777
/**
5878
* Alternative casing for [ImagenGenerationConfig.Builder]:
5979
* ```
@@ -97,3 +117,14 @@ public fun imagenGenerationConfig(
97117
builder.init()
98118
return builder.build()
99119
}
120+
121+
@OptIn(PublicPreviewAPI::class)
122+
public fun xx() {
123+
imagenGenerationConfig {
124+
negativePrompt = "People, black and white, painting"
125+
numberOfImages = 1
126+
aspectRatio = ImagenAspectRatio.SQUARE_1x1
127+
imageFormat = ImagenImageFormat.png()
128+
addWatermark = false
129+
}
130+
}

firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenImageFormat.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,13 @@ private constructor(public val mimeType: String, public val compressionQuality:
4141
* @param compressionQuality an int (1-100) representing the quality of the image; a lower
4242
* number means the image is permitted to be lower quality to reduce size.
4343
*/
44+
@JvmStatic
4445
public fun jpeg(compressionQuality: Int? = null): ImagenImageFormat {
4546
return ImagenImageFormat("image/jpeg", compressionQuality)
4647
}
4748

4849
/** An [ImagenImageFormat] representing a PNG image */
50+
@JvmStatic
4951
public fun png(): ImagenImageFormat {
5052
return ImagenImageFormat("image/png", null)
5153
}

0 commit comments

Comments
 (0)