Skip to content

Commit 6dbc739

Browse files
committed
Apply fixes to public documentation snippets
This reverts commit a5837be.
1 parent 3be517d commit 6dbc739

File tree

1 file changed

+38
-37
lines changed

1 file changed

+38
-37
lines changed

misc/src/main/java/com/example/snippets/ai/ImagenSnippets.kt

Lines changed: 38 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ import androidx.compose.ui.layout.ContentScale
5151
import com.google.firebase.Firebase
5252
import com.google.firebase.ai.ImagenModel
5353
import com.google.firebase.ai.ai
54-
import com.google.firebase.ai.type.Dimension
5554
import com.google.firebase.ai.type.Dimensions
5655
import com.google.firebase.ai.type.GenerativeBackend
5756
import com.google.firebase.ai.type.ImagenAspectRatio
@@ -83,12 +82,12 @@ import androidx.compose.ui.graphics.Color as ComposeColor
8382

8483
private object ImagenModelConfiguration {
8584
// [START android_imagen_model_configuration]
86-
val config = ImagenGenerationConfig {
87-
numberOfImages = 2
88-
aspectRatio = ImagenAspectRatio.LANDSCAPE_16x9
89-
imageFormat = ImagenImageFormat.jpeg(compressionQuality = 100)
90-
addWatermark = false
91-
}
85+
val config = ImagenGenerationConfig(
86+
numberOfImages = 2,
87+
aspectRatio = ImagenAspectRatio.LANDSCAPE_16x9,
88+
imageFormat = ImagenImageFormat.jpeg(compressionQuality = 100),
89+
addWatermark = false,
90+
)
9291

9392
// Initialize the Gemini Developer API backend service
9493
// For Vertex AI use Firebase.ai(backend = GenerativeBackend.vertexAI())
@@ -98,7 +97,7 @@ private object ImagenModelConfiguration {
9897
safetySettings = ImagenSafetySettings(
9998
safetyFilterLevel = ImagenSafetyFilterLevel.BLOCK_LOW_AND_ABOVE,
10099
personFilterLevel = ImagenPersonFilterLevel.BLOCK_ALL
101-
)
100+
),
102101
)
103102
// [END android_imagen_model_configuration]
104103
}
@@ -117,7 +116,7 @@ private fun generateImagesWithImagen(scope: CoroutineScope) {
117116
val imageResponse = model.generateImages(
118117
prompt = "A hyper realistic picture of a t-rex with a blue bagpack in a prehistoric forest",
119118
)
120-
val image = imageResponse.images.first
119+
val image = imageResponse.images.first()
121120
val bitmapImage = image.asBitmap()
122121
// [END android_imagen_generate_images]
123122
}
@@ -133,29 +132,32 @@ suspend fun insertFlowersIntoImage(
133132

134133
// Pass the original image, a mask, the prompt, and an editing configuration.
135134
val editedImage = model.editImage(
136-
sources = listOf(
137-
ImagenRawImage(originalImage),
138-
mask
135+
referenceImages = listOf(
136+
ImagenRawImage(originalImage.toImagenInlineImage()),
137+
mask,
139138
),
140139
prompt = prompt,
141140
// Define the editing configuration for inpainting and insertion.
142141
config = ImagenEditingConfig(ImagenEditMode.INPAINT_INSERTION)
143142
)
144-
145143
return editedImage
146144
}
147145
// [END android_imagen_inpaint_insertion]
148146

149147
// [START android_imagen_inpaint_removal]
150-
suspend fun removeBallFromImage(model: ImagenModel, originalImage: Bitmap, mask: ImagenMaskReference): ImagenGenerationResponse<ImagenInlineImage> {
148+
suspend fun removeBallFromImage(
149+
model: ImagenModel,
150+
originalImage: Bitmap,
151+
mask: ImagenMaskReference
152+
): ImagenGenerationResponse<ImagenInlineImage> {
151153

152154
// Optional: provide the prompt describing the content to be removed.
153155
val prompt = "a ball"
154156

155157
// Pass the original image, a mask, the prompt, and an editing configuration.
156158
val editedImage = model.editImage(
157-
sources = listOf(
158-
ImagenRawImage(originalImage),
159+
referenceImages = listOf(
160+
ImagenRawImage(originalImage.toImagenInlineImage()),
159161
mask
160162
),
161163
prompt = prompt,
@@ -168,7 +170,6 @@ suspend fun removeBallFromImage(model: ImagenModel, originalImage: Bitmap, mask:
168170
// [END android_imagen_inpaint_removal]
169171

170172
// [START android_imagen_editing_mask_editor]
171-
172173
@Composable
173174
fun ImagenEditingMaskEditor(
174175
sourceBitmap: Bitmap,
@@ -248,7 +249,7 @@ fun ImagenEditingMaskEditor(
248249
}
249250
Button(
250251
onClick = {
251-
val maskBitmap = createMask(sourceBitmap, paths)
252+
val maskBitmap = createMaskBitmap(sourceBitmap, paths)
252253
onMaskFinalized(maskBitmap)
253254
},
254255
) {
@@ -263,7 +264,7 @@ private fun createMaskBitmap(
263264
sourceBitmap: Bitmap,
264265
paths: SnapshotStateList<Path>,
265266
): Bitmap {
266-
val maskBitmap = createBitmap(sourceBitmap.width, sourceBitmap.height)
267+
val maskBitmap = Bitmap.createBitmap(sourceBitmap.width, sourceBitmap.height, Bitmap.Config.ARGB_8888)
267268
val canvas = android.graphics.Canvas(maskBitmap)
268269
val paint = Paint().apply {
269270
color = AndroidColor.RED
@@ -285,9 +286,9 @@ suspend fun expandImage(originalImage: Bitmap, imagenModel: ImagenModel): Imagen
285286
// Optionally describe what should appear in the expanded area.
286287
val prompt = "a sprawling sandy beach next to the ocean"
287288

288-
val editedImage = model.outpaintImage(
289-
ImagenRawImage(originalImage),
290-
Dimension(width, height),
289+
val editedImage = imagenModel.outpaintImage(
290+
originalImage.toImagenInlineImage(),
291+
Dimensions(1024, 1024),
291292
prompt = prompt,
292293
newPosition = ImagenImagePlacement.LEFT_CENTER
293294
)
@@ -304,8 +305,8 @@ suspend fun replaceBackground(model: ImagenModel, originalImage: Bitmap): Imagen
304305

305306
// Pass the original image, a mask, the prompt, and an editing configuration.
306307
val editedImage = model.editImage(
307-
sources = listOf(
308-
ImagenRawImage(originalImage),
308+
referenceImages = listOf(
309+
ImagenRawImage(originalImage.toImagenInlineImage()),
309310
ImagenBackgroundMask(),
310311
),
311312
prompt = prompt,
@@ -321,8 +322,8 @@ suspend fun customizeCatImage(model: ImagenModel, referenceCatImage: Bitmap): Im
321322

322323
// Define the subject reference using the reference image.
323324
val subjectReference = ImagenSubjectReference(
324-
image = referenceCatImage,
325-
referenceID = 1,
325+
image = referenceCatImage.toImagenInlineImage(),
326+
referenceId = 1,
326327
description = "cat",
327328
subjectType = ImagenSubjectReferenceType.ANIMAL
328329
)
@@ -333,7 +334,7 @@ suspend fun customizeCatImage(model: ImagenModel, referenceCatImage: Bitmap): Im
333334

334335
// Use the editImage API to perform the subject customization.
335336
val editedImage = model.editImage(
336-
references = listOf(subjectReference),
337+
referenceImages = listOf(subjectReference),
337338
prompt = prompt,
338339
config = ImagenEditingConfig(
339340
editSteps = 50 // Number of editing steps, a higher value can improve quality
@@ -345,23 +346,23 @@ suspend fun customizeCatImage(model: ImagenModel, referenceCatImage: Bitmap): Im
345346
// [END android_imagen_customize_subject]
346347

347348
// [START android_imagen_customize_control]
348-
suspend fun customizeCatImageByControl(model: ImagenModel, referenceCatImage: Bitmap): ImagenGenerationResponse<ImagenInlineImage> {
349+
suspend fun customizeCatImageByControl(model: ImagenModel, referenceImage: Bitmap): ImagenGenerationResponse<ImagenInlineImage> {
349350

350351
// Define the subject reference using the reference image.
351352
val controlReference = ImagenControlReference(
352-
image = referenceImage,
353-
referenceID = 1,
354-
controlType = CONTROL_TYPE_SCRIBBLE
353+
image = referenceImage.toImagenInlineImage(),
354+
referenceId = 1,
355+
type = ImagenControlType.SCRIBBLE,
355356
)
356357

357358
val prompt = "A cat flying through outer space arranged like the scribble map[1]"
358359

359360
val editedImage = model.editImage(
360-
references = listOf(controlReference),
361+
referenceImages = listOf(controlReference),
361362
prompt = prompt,
362363
config = ImagenEditingConfig(
363364
editSteps = 50
364-
)
365+
),
365366
)
366367

367368
return editedImage
@@ -373,8 +374,8 @@ suspend fun customizeImageByStyle(model: ImagenModel, referenceVanGoghImage: Bit
373374

374375
// Define the style reference using the reference image.
375376
val styleReference = ImagenStyleReference(
376-
image = referenceVanGoghImage,
377-
referenceID = 1,
377+
image = referenceVanGoghImage.toImagenInlineImage(),
378+
referenceId = 1,
378379
description = "Van Gogh style"
379380
)
380381

@@ -384,11 +385,11 @@ suspend fun customizeImageByStyle(model: ImagenModel, referenceVanGoghImage: Bit
384385

385386
// Use the editImage API to perform the style customization.
386387
val editedImage = model.editImage(
387-
references = listOf(styleReference),
388+
referenceImages = listOf(styleReference),
388389
prompt = prompt,
389390
config = ImagenEditingConfig(
390391
editSteps = 50 // Number of editing steps, a higher value can improve quality
391-
)
392+
),
392393
)
393394

394395
return editedImage

0 commit comments

Comments
 (0)