Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions firebase-ai/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
configured.
* [feature] added support for Imagen Editing, including inpainting, outpainting, control, style
transfer, and subject references (#7075)
* [changed] Added a `dilation` parameter to `ImagenMaskReference.generateMaskAndPadForOutpainting`
* (#7260)

# 17.0.0
* [feature] Added support for configuring the "thinking" budget when using Gemini
Expand Down
2 changes: 2 additions & 0 deletions firebase-ai/api.txt
Original file line number Diff line number Diff line change
Expand Up @@ -698,12 +698,14 @@ package com.google.firebase.ai.type {
@com.google.firebase.ai.type.PublicPreviewAPI public abstract class ImagenMaskReference extends com.google.firebase.ai.type.ImagenReferenceImage {
method public static final java.util.List<com.google.firebase.ai.type.ImagenReferenceImage> generateMaskAndPadForOutpainting(com.google.firebase.ai.type.ImagenInlineImage image, com.google.firebase.ai.type.Dimensions newDimensions);
method public static final java.util.List<com.google.firebase.ai.type.ImagenReferenceImage> generateMaskAndPadForOutpainting(com.google.firebase.ai.type.ImagenInlineImage image, com.google.firebase.ai.type.Dimensions newDimensions, com.google.firebase.ai.type.ImagenImagePlacement newPosition = com.google.firebase.ai.type.ImagenImagePlacement.CENTER);
method public static final java.util.List<com.google.firebase.ai.type.ImagenReferenceImage> generateMaskAndPadForOutpainting(com.google.firebase.ai.type.ImagenInlineImage image, com.google.firebase.ai.type.Dimensions newDimensions, com.google.firebase.ai.type.ImagenImagePlacement newPosition = com.google.firebase.ai.type.ImagenImagePlacement.CENTER, double dilation = 0.01);
field public static final com.google.firebase.ai.type.ImagenMaskReference.Companion Companion;
}

public static final class ImagenMaskReference.Companion {
method public java.util.List<com.google.firebase.ai.type.ImagenReferenceImage> generateMaskAndPadForOutpainting(com.google.firebase.ai.type.ImagenInlineImage image, com.google.firebase.ai.type.Dimensions newDimensions);
method public java.util.List<com.google.firebase.ai.type.ImagenReferenceImage> generateMaskAndPadForOutpainting(com.google.firebase.ai.type.ImagenInlineImage image, com.google.firebase.ai.type.Dimensions newDimensions, com.google.firebase.ai.type.ImagenImagePlacement newPosition = com.google.firebase.ai.type.ImagenImagePlacement.CENTER);
method public java.util.List<com.google.firebase.ai.type.ImagenReferenceImage> generateMaskAndPadForOutpainting(com.google.firebase.ai.type.ImagenInlineImage image, com.google.firebase.ai.type.Dimensions newDimensions, com.google.firebase.ai.type.ImagenImagePlacement newPosition = com.google.firebase.ai.type.ImagenImagePlacement.CENTER, double dilation = 0.01);
}

@com.google.firebase.ai.type.PublicPreviewAPI public final class ImagenPersonFilterLevel {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,13 +124,15 @@ internal constructor(maskConfig: ImagenMaskConfig, image: ImagenInlineImage? = n
* @param newDimensions the new dimensions for outpainting. These new dimensions *must* be more
* than the original image.
* @param newPosition the placement of the original image within the new outpainted image.
* @param dilation the dilation for the outpainting mask. See: [ImagenRawMask].
*/
@JvmOverloads
@JvmStatic
public fun generateMaskAndPadForOutpainting(
image: ImagenInlineImage,
newDimensions: Dimensions,
newPosition: ImagenImagePlacement = ImagenImagePlacement.CENTER,
dilation: Double = 0.01
): List<ImagenReferenceImage> {
val originalBitmap = image.asBitmap()
if (
Expand Down Expand Up @@ -180,7 +182,7 @@ internal constructor(maskConfig: ImagenMaskConfig, image: ImagenInlineImage? = n
newImageCanvas.drawBitmap(originalBitmap, null, normalizedImageRectangle, null)
return listOf(
ImagenRawImage(newImageBitmap.toImagenInlineImage()),
ImagenRawMask(maskBitmap.toImagenInlineImage()),
ImagenRawMask(maskBitmap.toImagenInlineImage(), dilation),
)
}
}
Expand Down
Loading