Wszystkie modele Imagen zostaną wycofane i wyłączone 24 czerwca 2026 r.. Wycofanie i wyłączenie dotyczy wszystkich usług Google oraz interfejsu Gemini Developer API i Vertex AI Gemini API.
Aby uniknąć przerw w działaniu usługi, przed tą datą przenieś swoje aplikacje z modeli Imagen na modele Gemini do tworzenia obrazów („Nano Banana”), zgodnie z opisem w tym przewodniku.
Jeśli masz pilny problem związany z wycofaniem i wyłączeniem, skontaktuj się z zespołem pomocy Firebase.
Modele do tworzenia obrazówGemini
Wybierz model do tworzenia obrazów, który zastąpi model Imagen w Twojej aplikacji. W tym celu zapoznaj się z tabelą poniżej.Gemini
| Imagen model | Gemini Modele do tworzenia obrazów ("Nano Banana") |
|---|---|
imagen-4.0-fast-generate-001 |
gemini-2.5-flash-image (GA)gemini-3.1-flash-image-preview (z poziomem myślenia
MINIMAL) |
imagen-4.0-generate-001 |
gemini-2.5-flash-image (GA)gemini-3.1-flash-image-preview (z poziomem myślenia
HIGH) |
imagen-4.0-ultra-generate-001 |
gemini-2.5-flash-image (GA)gemini-3-pro-image-preview |
imagen-3.0-capability-001 |
gemini-2.5-flash-image (GA)gemini-3.1-flash-image-preview |
Przenoszenie aplikacji
W tej sekcji znajdziesz przykłady przed i po przeniesieniu z modelu Imagen na model Gemini do tworzenia obrazów.
Wygeneruj obraz na podstawie tekstu
|
Kliknij swojego dostawcę Gemini API, aby wyświetlić na tej stronie treści i kod specyficzne dla dostawcy. |
Aby wygenerować obraz na podstawie tekstu, przenieś swoją aplikację:
Użyj odpowiedniego modelu Geminido tworzenia obrazów (np.
gemini-2.5-flash-image).Utwórz instancję
GenerativeModel(zamiast instancjiImagenModel).Zaktualizuj opcje konfiguracji modelu, aby uwzględnić Gemini modele do tworzenia obrazów.
- W ramach tej konfiguracji ustaw tryb odpowiedzi na
IMAGE.
Pamiętaj, że modele do tworzenia obrazów Geminimożna skonfigurować tak, aby zwracały zarówno obrazy jak i tekst.
- W ramach tej konfiguracji ustaw tryb odpowiedzi na
(Vertex AI Gemini API tylko) Zaktualizuj lokalizację, w której uzyskujesz dostęp do modelu na obsługiwaną lokalizację dla modeli do tworzenia obrazów Gemini. Zalecamy użycie lokalizacji
global.
Swift
Przed
import FirebaseAILogic
// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Create an `ImagenModel` instance with a model that supports your use case
let model = ai.imagenModel(modelName: "IMAGEN_MODEL_NAME")
// Provide an image generation prompt
let prompt = "An astronaut riding a horse"
// To generate an image, call `generateImages` with the text prompt
let response = try await model.generateImages(prompt: prompt)
// Handle the generated image
guard let image = response.images.first else {
fatalError("No image in the response.")
}
let uiImage = UIImage(data: image.data)
Po
import FirebaseAILogic
// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Create a `GenerativeModel` instance with a Gemini model that supports image output
let model = ai.generativeModel(
modelName: "GEMINI_IMAGE_MODEL_NAME",
generationConfig: GenerationConfig(
responseModalities: [.image],
imageConfig: ImageConfig(aspectRatio: .landscape4x3)
)
)
// Provide an image generation prompt
let prompt = "An astronaut riding a horse"
// To generate an image, call `generateContent` with the text prompt
let response = try await model.generateContent(prompt)
// Handle the case where no images were generated
guard let inlineDataPart = response.inlineDataParts.first else {
fatalError("No image in the response.")
}
// Process the image
guard let uiImage = UIImage(data: inlineDataPart.data) else {
fatalError("Failed to convert data to UIImage.")
}
Kotlin
Przed
// Initialize the Gemini Developer API backend service
val ai = Firebase.ai(backend = GenerativeBackend.googleAI())
// Create an `ImagenModel` instance with an Imagen model that supports your use case
val model = ai.imagenModel("IMAGEN_MODEL_NAME")
// Provide an image generation prompt
val prompt = "An astronaut riding a horse"
// To generate an image, call `generateImages` with the text prompt
val imageResponse = model.generateImages(prompt)
// Handle the generated image
val image = imageResponse.images.first()
val bitmapImage = image.asBitmap()
Po
// Initialize the Gemini Developer API backend service
val ai = Firebase.ai(backend = GenerativeBackend.googleAI())
// Create a `GenerativeModel` instance with a Gemini model that supports image output
val model = ai.generativeModel(
modelName = "GEMINI_IMAGE_MODEL_NAME",
generationConfig = generationConfig {
responseModalities = listOf(ResponseModality.IMAGE),
imageConfig = imageConfig {
aspectRatio = AspectRatio.LANDSCAPE_4x3
}
}
)
// Provide an image generation prompt
val prompt = "An astronaut riding a horse"
// To generate an image, call `generateContent` with the text prompt
val imageResponse = model.generateContent(prompt)
if (imageResponse.finishReason == FinishReason.NO_IMAGE) {
// Handle the case where no images were generated
} else {
// Handle the generated image
val bitmapImage = imageResponse.candidates.first().content.parts.filterIsInstance().firstOrNull()?.image
}
Java
Przed
// Initialize the Gemini Developer API backend service
// Create an `ImagenModel` instance with an Imagen model that supports your use case
ImagenModel imagenModel = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.imagenModel(
/* modelName */ "IMAGEN_MODEL_NAME");
ImagenModelFutures model = ImagenModelFutures.from(imagenModel);
// Provide an image generation prompt
String prompt = "An astronaut riding a horse";
// To generate an image, call `generateImages` with the text prompt
Futures.addCallback(model.generateImages(prompt), new FutureCallback<ImagenGenerationResponse>() {
@Override
public void onSuccess(ImagenGenerationResponse result) {
if (result.getImages().isEmpty()) {
Log.d("TAG", "No images generated");
}
Bitmap bitmap = result.getImages().get(0).asBitmap();
// Use the bitmap to display the image in your UI
}
@Override
public void onFailure(Throwable t) {
// ...
}
}, Executors.newSingleThreadExecutor());
Po
// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a Gemini model that supports image output
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI()).generativeModel(
"GEMINI_IMAGE_MODEL_NAME",
new GenerationConfig.Builder()
.setResponseModalities(Arrays.asList(ResponseModality.IMAGE))
.setImageConfig(new ImageConfig(AspectRatio.LANDSCAPE_4x3, null))
.build()
);
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
// Provide a text prompt instructing the model to generate an image
Content prompt = new Content.Builder()
.addText("An astronaut riding a horse")
.build();
// To generate an image, call `generateContent` with the text input
Executor executor = Executors.newSingleThreadExecutor();
ListenableFuture response = model.generateContent(prompt);
Futures.addCallback(response, new FutureCallback() {
@Override
public void onSuccess(GenerateContentResponse result) {
if (result.finishReason == FinishReason.NO_IMAGE) {
// handle the case where no images were generated
return;
}
// iterate over all the parts in the first candidate in the result object
for (Part part : result.getCandidates().get(0).getContent().getParts()) {
if (part instanceof ImagePart) {
ImagePart imagePart = (ImagePart) part;
// The returned image as a bitmap
Bitmap generatedImageAsBitmap = imagePart.getImage();
break;
}
}
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
Web
Przed
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, getImagenModel, GoogleAIBackend } from "firebase/ai";
// TODO(developer) Replace the following with your app's Firebase configuration
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Create an `ImagenModel` instance with an Imagen model that supports your use case
const model = getImagenModel(ai, { model: "IMAGEN_MODEL_NAME" });
// Provide an image generation prompt
const prompt = "An astronaut riding a horse.";
// To generate an image, call `generateImages` with the text prompt
const response = await model.generateImages(prompt)
// If fewer images were generated than were requested,
// then `filteredReason` will describe the reason they were filtered out
if (response.filteredReason) {
console.log(response.filteredReason);
}
if (response.images.length == 0) {
throw new Error("No images in the response.")
}
const image = response.images[0];
Po
import { initializeApp } from "firebase/app";
import {
getAI,
getGenerativeModel,
GoogleAIBackend,
ResponseModality,
ImageConfigAspectRatio,
FinishReason
} from "firebase/ai";
// TODO(developer) Replace the following with your app's Firebase configuration
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Create a `GenerativeModel` instance with a model that supports your use case
const model = getGenerativeModel(ai, {
model: "GEMINI_IMAGE_MODEL_NAME",
generationConfig: {
responseModalities: [ResponseModality.IMAGE],
imageConfig: {
aspectRatio: ImageConfigAspectRatio.LANDSCAPE_4x3
}
},
});
// Provide an image generation prompt
const prompt = "An astronaut riding a horse.";
// To generate an image, call `generateContent` with the text prompt
const result = await model.generateContent(prompt);
// Handle the generated image
try {
const response = result.response;
if (response.candidates?.[0].finishReason == FinishReason.NO_IMAGE) {
// Handle the case where no images were generated
}
const inlineDataParts = response.inlineDataParts();
if (inlineDataParts?.[0]) {
const image = inlineDataParts[0].inlineData;
// Use this mimeType and base64 data to display the image using
// your preferred tooling
console.log(image.mimeType, image.data);
}
} catch (err) {
console.error('Prompt or candidate was blocked:', err);
}
Dart
Przed
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
// Initialize FirebaseApp
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Gemini Developer API backend service
final ai = FirebaseAI.googleAI();
// Create an `ImagenModel` instance with an Imagen model that supports your use case
final model = ai.imagenModel(model: 'IMAGEN_MODEL_NAME');
// Provide an image generation prompt
const prompt = 'An astronaut riding a horse.';
// To generate an image, call `generateImages` with the text prompt
final response = await model.generateImages(prompt);
if (response.images.isNotEmpty) {
final image = response.images[0];
// Process the image
} else {
// Handle the case where no images were generated
print('Error: No images were generated.');
}
Po
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
// Initialize FirebaseApp
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Gemini Developer API backend service
final ai = FirebaseAI.googleAI();
// Create a `GenerativeModel` instance with a Gemini model that supports image output
final model = ai.generativeModel(
model: 'GEMINI_IMAGE_MODEL_NAME',
generationConfig: GenerationConfig(
responseModalities: [ResponseModalities.image],
imageConfig: ImageConfig(aspectRatio: ImageAspectRatio.landscape4x3)
),
);
// Provide a text prompt instructing the model to generate an image
final prompt = [Content.text('An astronaut riding a horse.')];
// To generate an image, call `generateContent` with the text prompt
final response = await model.generateContent(prompt);
if (response.inlineDataParts.isNotEmpty) {
final imageBytes = response.inlineDataParts.first.bytes;
// Process the image
} else {
// Handle the case where no images were generated
print('Error: No images were generated.');
}
Unity
Przed
using Firebase.AI;
// Initialize the Gemini Developer API backend service
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Create an `ImagenModel` instance with a model that supports your use case
var model = ai.GetImagenModel(modelName: "IMAGEN_MODEL_NAME");
// Provide an image generation prompt
var prompt = "An astronaut riding a horse";
// To generate an image, call `generateImages` with the text prompt
var response = await model.GenerateImagesAsync(prompt: prompt);
// Handle the generated image
if (response.Images.Count == 0) {
throw new Exception("No image in the response.");
}
var image = response.Images[0].AsTexture2D();
Po
using Firebase;
using Firebase.AI;
// Initialize the Gemini Developer API backend service
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Create a `GenerativeModel` instance with a Gemini model that supports image output
var model = ai.GetGenerativeModel(
modelName: "GEMINI_IMAGE_MODEL_NAME",
generationConfig: new GenerationConfig(
responseModalities: new[] { ResponseModality.Image },
imageConfig: new ImageConfig(aspectRatio: ImageConfig.AspectRatio.Landscape4x3)
)
);
// Provide an image generation prompt
var prompt = "An astronaut riding a horse";
// To generate an image, call `GenerateContentAsync` with the text prompt
var response = await model.GenerateContentAsync(prompt);
if (response.Candidates.First().FinishReason == FinishReason.NoImage) {
// Handle the case where no images were generated
}
// Handle the generated image
var imageParts = response.Candidates.First().Content.Parts
.OfType<ModelContent.InlineDataPart>()
.Where(part => part.MimeType == "image/png");
foreach (var imagePart in imageParts) {
// Load the Image into a Unity Texture2D object
UnityEngine.Texture2D texture2D = new(2, 2);
if (texture2D.LoadImage(imagePart.Data.ToArray())) {
// Do something with the image
}
}
Opcje konfiguracji zastępczej
W tej sekcji opisujemy opcje zastępcze dla różnych opcji konfiguracji modelu, które pomagają kontrolować odpowiedź modelu.
Ustawienia bezpieczeństwa
Ustawienia bezpieczeństwa dla modeli Imagen konfiguruje się za pomocą
ImagenSafetySettings. W przypadku modeli Gemini do tworzenia obrazów musisz
przejść na SafetySetting.
Parametry konfiguracji modelu
Modele Imagen konfiguruje się za pomocą ImagenGenerationConfig. W przypadku modeli Gemini do tworzenia obrazów musisz jednak przejść na GenerationConfig i opcjonalnie na zagnieżdżony ImageConfig (jest on dostępny od wersji pakietów SDK z początku maja 2026 r.).
W ramach GenerationConfig ustaw tryb odpowiedzi na IMAGE (jak pokazano w przykładowych kodach „po” we wcześniejszej części tego przewodnika). Pamiętaj, że modele do tworzenia obrazów możesz opcjonalnie
skonfigurować tak, aby zwracały zarówno IMAGE jak i TEXT.Gemini
Zapoznaj się z tabelą poniżej, aby dowiedzieć się, jak przenieść parametry konfiguracji modelu z modeli Imagen na modele Gemini do tworzenia obrazów:
| Modele Imagen | Gemini Modele do tworzenia obrazów ("Nano Banana") |
|---|---|
addWatermark |
Nieobsługiwane Gemini Modele do tworzenia obrazów zawsze zwracają wygenerowane obrazy ze znakiem wodnym SynthID. |
aspectRatio |
Użyj Przykłady kodu i obsługiwane wartości znajdziesz w Konfigurowanie generowania obrazów w przewodniku po modelach Gemini do tworzenia obrazów. |
imageFormat |
Nieobsługiwane Gemini Modele do tworzenia obrazów zawsze zwracają wygenerowane obrazy w formacie PNG. |
negativePrompt |
Nieobsługiwane
Pamiętaj, że negatywne prompty to funkcja starsza, która nie jest obsługiwana od wersji |
numberOfImages |
Nieobsługiwane
Gemini Modele do tworzenia obrazów zawsze zwracają pojedynczy wygenerowany obraz.
|
personGeneration |
Nieobsługiwane Domyślnie modele Gemini do tworzenia obrazów umożliwiają generowanie obrazów przedstawiających ludzi. |