Expandir o conteúdo de uma imagem usando a outpainting com o Imagen
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Nesta página, descrevemos como usar a pintura externa com Imagen para expandir o conteúdo de uma imagem além das bordas originais usando os SDKs Firebase AI Logic.
Outpainting é um tipo de edição baseada em máscara. Uma máscara é uma sobreposição digital que define a área específica que você quer editar.
Como funciona: você fornece uma imagem original e uma imagem mascarada correspondente, gerada automaticamente ou fornecida por você, que define uma máscara da nova área expandida. Você também pode fornecer um comando de texto descrevendo o que quer na área expandida. Caso contrário, o modelo vai decidir de forma inteligente o que vai continuar a cena atual. O modelo gera o novo conteúdo e preenche a área mascarada.
Por exemplo, você pode mudar a proporção de uma imagem ou adicionar mais contexto de segundo plano.
Disponível apenas quando você usa o Vertex AI Gemini API como provedor de API.
Se ainda não tiver feito isso, conclua o
guia de primeiros passos, que
descreve como configurar seu projeto do Firebase, conectar seu app ao Firebase,
adicionar o SDK, inicializar o serviço de back-end para o provedor de API escolhido e
criar uma instância de ImagenModel.
Modelos compatíveis com esse recurso
O Imagen oferece edição de imagens com o modelo capability:
imagen-3.0-capability-001
Para modelos Imagen, o local globalnão é compatível.
Ampliar o conteúdo de uma imagem
Antes de testar esta amostra, conclua a seção
Antes de começar deste guia
para configurar seu projeto e app.
O exemplo a seguir mostra como expandir uma imagem além das bordas originais
usando uma máscara definida em uma imagem fornecida.
Você fornece a imagem original, um comando de texto e a imagem mascarada. Observe o seguinte sobre a imagem original e a mascarada:
A imagem mascarada precisa ter as dimensões de pixel do tamanho desejado da imagem final com pintura externa.
A imagem original precisa incluir um padding extra para corresponder às dimensões de pixel da imagem mascarada.
Fornecer um comando de texto é opcional se você quiser que o modelo decida de forma inteligente o que vai continuar logicamente a cena atual. Se você quiser conteúdo específico na área expandida, especifique isso em um comando de texto.
Swift
A edição de imagens com modelos Imagen não é compatível com Swift. Volte mais tarde este ano!
Kotlin
Para expandir uma imagem, use
editImage()
e defina a configuração de edição para usar ImagenEditMode.OUTPAINT.
Você pode usar opcionalmente
outpaintImage()
em vez de editImage(), e não é necessário especificar o modo de edição.
Para expandir uma imagem, use
editImage()
e defina a configuração de edição para usar ImagenEditMode.OUTPAINT.
Você pode usar opcionalmente
outpaintImage()
em vez de editImage(), e não é necessário especificar o modo de edição.
A edição de imagens com modelos Imagen não é compatível com o Unity. Volte mais tarde este ano!
Práticas recomendadas e limitações
Recomendamos dilatar a máscara ao editar uma imagem. Isso ajuda a suavizar as bordas de uma edição e a tornar a mudança mais convincente. Em geral, é recomendável um valor de dilatação de 1% ou 2% (0.01 ou 0.02).
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-10 UTC."],[],[],null,["\u003cbr /\u003e\n\n\n| **Preview** : Using the Firebase AI Logic SDKs to access Imagen models is a feature that's in Preview, which means that it isn't subject to any SLA or deprecation policy and could change in backwards-incompatible ways.\n|\n| Editing with Imagen is only supported if you're using the\n| Vertex AI Gemini API. It's also currently only supported for\n| Android and Flutter apps. Support for other platforms is coming later in the\n| year.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\nThis page describes how to use *outpainting* using Imagen to\n**expand the content of an image beyond its original borders**\nusing the Firebase AI Logic SDKs.\n\nOutpainting is a type of *mask-based editing* . A *mask* is a digital overlay\ndefining the specific area you want to edit.\n\n\n**How it works**: You provide an original image and a\ncorresponding masked image --- either auto-generated or provided by you --- that\ndefines a mask of the new, expanded area. You can also optionally provide a\ntext prompt describing what you want in the expanded area, or the model can\nintelligently decide what will logically continue the existing scene. The\nmodel generates the new content and fills in the masked area.\n\n\nFor example, you can change an image's aspect ratio or add more background\ncontext.\n\n\u003cbr /\u003e\n\n[arrow_downward Jump to code](#expand-image)\n\nBefore you begin\n\n\n|----------------------------------------------------------------------------|\n| *Only available when using the Vertex AI Gemini API as your API provider.* |\n\n\nIf you haven't already, complete the\n[getting started guide](/docs/ai-logic/get-started), which\ndescribes how to set up your Firebase project, connect your app to Firebase,\nadd the SDK, initialize the backend service for your chosen API provider, and\ncreate an `ImagenModel` instance.\n| **This guide assumes you're using the latest\n| Firebase AI Logic SDKs.** If you're still using the \"Vertex AI in Firebase\" SDKs, see the [migration guide](/docs/ai-logic/migrate-to-latest-sdk).\n\nModels that support this capability\n\n\nImagen offers image editing through its `capability`\nmodel:\n\n- `imagen-3.0-capability-001`\n\n\nNote that for Imagen models, the `global` location is\n***not*** supported.\n\n\u003cbr /\u003e\n\nExpand content of an image\n\n\n|---------------------------------------------------------------------------------------------------------------------------------------|\n| *Before trying this sample, complete the [Before you begin](#before-you-begin) section of this guide to set up your project and app.* |\n\n\u003cbr /\u003e\n\nThe following sample shows how to expand an image beyond its original borders\n--- using a mask defined in an image that you provide.\nYou provide the original image, a text prompt, and the masked image. Note the\nfollowing about the original and masked image:\n\n- The masked image must have the pixel dimensions of the targeted size of the\n final outpainted image.\n\n- The original image must include additional padding to match the pixel\n dimensions of the masked image.\n\nProviding a text prompt is optional if you want the model to intelligently\ndecide what will logically continue the existing scene. If you want specific\ncontent within the expanded area, you need to specify that in a text prompt. \n\nSwift\n\nImage editing with Imagen models isn't supported for Swift. Check back later this year!\n\nKotlin\n\nTo expand an image, use\n[`editImage()`](/docs/reference/kotlin/com/google/firebase/ai/ImagenModel#editImage(kotlin.collections.List,kotlin.String,com.google.firebase.ai.type.ImagenEditingConfig))\nand set the editing config to use `ImagenEditMode.OUTPAINT`.\n\nNote that you can optionally use\n[`outpaintImage()`](/docs/reference/kotlin/com/google/firebase/ai/ImagenModel#outpaintImage(com.google.firebase.ai.type.ImagenInlineImage,com.google.firebase.ai.type.Dimensions,com.google.firebase.ai.type.ImagenImagePlacement,kotlin.String,com.google.firebase.ai.type.ImagenEditingConfig))\ninstead of `editImage()`, and you don't need to specify the editing mode.\n| **Note:** The SDK provides a helper function [`generateMaskAndPadForOutpainting()`](https://firebase.google.com/docs/reference/kotlin/com/google/firebase/ai/type/ImagenMaskReference) to generate a masked image with your specified dimensions and the original image centered within the expanded area.\n\nCheck out the\n[quickstart for sample code for outpainting](https://github.com/firebase/quickstart-android/blob/master/firebase-ai/app/src/main/java/com/google/firebase/quickstart/ai/feature/media/imagen/ImagenViewModel.kt).\n\n\u003cbr /\u003e\n\nJava\n\nTo expand an image, use\n[`editImage()`](/docs/reference/android/com/google/firebase/ai/ImagenModel#editImage(kotlin.collections.List,kotlin.String,com.google.firebase.ai.type.ImagenEditingConfig))\nand set the editing config to use `ImagenEditMode.OUTPAINT`.\n\nNote that you can optionally use\n[`outpaintImage()`](/docs/reference/android/com/google/firebase/ai/ImagenModel#outpaintImage(com.google.firebase.ai.type.ImagenInlineImage,com.google.firebase.ai.type.Dimensions,com.google.firebase.ai.type.ImagenImagePlacement,kotlin.String,com.google.firebase.ai.type.ImagenEditingConfig))\ninstead of `editImage()`, and you don't need to specify the editing mode.\n| **Note:** The SDK provides a helper function [`generateMaskAndPadForOutpainting()`](https://firebase.google.com/docs/reference/android/com/google/firebase/ai/type/ImagenMaskReference) to generate a masked image with your specified dimensions and the original image centered within the expanded area.\n\nCheck out the\n[quickstart for sample code for outpainting](https://github.com/firebase/quickstart-android/blob/master/firebase-ai/app/src/main/java/com/google/firebase/quickstart/ai/feature/media/imagen/ImagenViewModel.kt).\n\n\u003cbr /\u003e\n\nWeb\n\nImage editing with Imagen models isn't supported for Web apps. Check back later this year!\n\nDart\n\nTo expand an image, use\n[`editImage()`](https://pub.dev/documentation/firebase_ai/latest/firebase_ai/ImagenModel/editImage.html)\nand set the editing config to use `ImagenEditMode.OUTPAINT`.\n\nCheck out the\n[quickstart for sample code for outpainting](https://github.com/firebase/flutterfire/blob/main/packages/firebase_ai/firebase_ai/example/lib/utils/image_utils.dart).\n\n\u003cbr /\u003e\n\nUnity\n\nImage editing with Imagen models isn't supported for Unity. Check back later this year!\n\nBest practices and limitations\n\n\nWe recommend dilating the mask when editing an image. This can help smooth\nthe borders of an edit and make it seem more convincing. Generally, a dilation\nvalue of 1% or 2% is recommended (`0.01` or `0.02`).\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n[Give feedback\nabout your experience with Firebase AI Logic](/docs/ai-logic/feedback)\n\n\u003cbr /\u003e"]]