Mở rộng nội dung của hình ảnh bằng tính năng vẽ tràn viền bằng Imagen
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Trang này mô tả cách sử dụng tính năng tạo sinh bên ngoài bằng Imagen để mở rộng nội dung của một hình ảnh ra ngoài đường viền ban đầu bằng cách sử dụng các SDK Firebase AI Logic.
Tính năng mở rộng hình ảnh là một loại chỉnh sửa dựa trên mặt nạ. Mặt nạ là một lớp phủ kỹ thuật số xác định vùng cụ thể mà bạn muốn chỉnh sửa.
Cách hoạt động: Bạn cung cấp một hình ảnh gốc và một hình ảnh được che tương ứng (do bạn cung cấp hoặc được tạo tự động) để xác định mặt nạ của vùng mới được mở rộng. Bạn cũng có thể cung cấp câu lệnh dạng văn bản (không bắt buộc) mô tả nội dung bạn muốn trong vùng mở rộng, hoặc mô hình có thể tự động quyết định nội dung nào sẽ tiếp tục một cách hợp lý cảnh hiện có. Mô hình này sẽ tạo nội dung mới và điền vào vùng bị che.
Ví dụ: bạn có thể thay đổi tỷ lệ khung hình của một hình ảnh hoặc thêm ngữ cảnh nền.
Chỉ có khi bạn dùng Vertex AI Gemini API làm trình cung cấp API.
Nếu bạn chưa thực hiện, hãy hoàn tất hướng dẫn bắt đầu sử dụng. Hướng dẫn này mô tả cách thiết lập dự án Firebase, kết nối ứng dụng của bạn với Firebase, thêm SDK, khởi chạy dịch vụ phụ trợ cho nhà cung cấp API mà bạn chọn và tạo một thực thể ImagenModel.
Các mô hình hỗ trợ tính năng này
Imagen cung cấp tính năng chỉnh sửa hình ảnh thông qua mô hình capability:
imagen-3.0-capability-001
Xin lưu ý rằng đối với các mô hình Imagen, hệ thống không hỗ trợ vị trí global.
Mở rộng nội dung của một hình ảnh
Trước khi dùng thử mẫu này, hãy hoàn tất phần Trước khi bắt đầu của hướng dẫn này để thiết lập dự án và ứng dụng của bạn.
Mẫu sau đây cho biết cách mở rộng một hình ảnh vượt ra ngoài đường viền ban đầu – bằng cách sử dụng một mặt nạ được xác định trong hình ảnh mà bạn cung cấp.
Bạn cung cấp hình ảnh gốc, câu lệnh dạng văn bản và hình ảnh được che. Xin lưu ý những điều sau về hình ảnh gốc và hình ảnh đã che:
Hình ảnh được che phải có kích thước pixel bằng với kích thước mục tiêu của hình ảnh cuối cùng được mở rộng.
Hình ảnh gốc phải có thêm khoảng đệm để phù hợp với kích thước pixel của hình ảnh được che.
Bạn không bắt buộc phải cung cấp câu lệnh dạng văn bản nếu muốn mô hình tự động quyết định nội dung sẽ tiếp tục một cách hợp lý cho cảnh hiện có. Nếu muốn có nội dung cụ thể trong vùng mở rộng, bạn cần chỉ định nội dung đó trong câu lệnh dạng văn bản.
Swift
Swift không hỗ trợ tính năng chỉnh sửa hình ảnh bằng các mô hình Imagen. Hãy kiểm tra lại vào cuối năm nay!
Kotlin
Để mở rộng hình ảnh, hãy dùng editImage() và đặt cấu hình chỉnh sửa để dùng ImagenEditMode.OUTPAINT.
Xin lưu ý rằng bạn có thể tuỳ ý sử dụng outpaintImage() thay vì editImage() và bạn không cần chỉ định chế độ chỉnh sửa.
Để mở rộng hình ảnh, hãy dùng editImage() và đặt cấu hình chỉnh sửa để dùng ImagenEditMode.OUTPAINT.
Xin lưu ý rằng bạn có thể tuỳ ý sử dụng outpaintImage() thay vì editImage() và bạn không cần chỉ định chế độ chỉnh sửa.
Unity không hỗ trợ tính năng chỉnh sửa hình ảnh bằng các mô hình Imagen. Hãy kiểm tra lại vào cuối năm nay!
Các phương pháp hay nhất và hạn chế
Bạn nên mở rộng mặt nạ khi chỉnh sửa hình ảnh. Điều này có thể giúp làm mịn đường viền của nội dung chỉnh sửa và khiến nội dung đó trông thuyết phục hơn. Nhìn chung, bạn nên sử dụng giá trị giãn nở là 1% hoặc 2% (0.01 hoặc 0.02).
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 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"]]