מעבר מ-Imagen למודל תמונות של Gemini ‏(Nano Banana)


כל המודלים של Imagen הוצאו משימוש ויושבתו ב-24 ביוני 2026. ההוצאה משימוש וההשבתה האלה רלוונטיות לכל מוצרי Google, גם ל-Gemini Developer API וגם ל-Vertex AI Gemini API.

כדי למנוע שיבושים בשירות, לפני תאריך הסגירה הזה, צריך להעביר את האפליקציות משימוש במודלים של Imagen לשימוש בGemini מודלים של תמונות (מודלים של Nano Banana), כמו שמתואר במדריך הזה.

אם יש לכם בעיה דחופה שקשורה להוצאה משימוש ולסגירה של התכונה הזו, אתם יכולים לפנות לתמיכה של Firebase.

החלפה Gemini מודלים של תמונות

כדי לבחור מודל חלופי של Gemini תמונות לאפליקציה, אפשר להיעזר בטבלה הבאה.

מודל Imagen Gemini מודלים של תמונות (Nano Banana)
imagen-4.0-fast-generate-001 gemini-2.5-flash-image (GA)
gemini-3.1-flash-image-preview (עם רמת חשיבה MINIMAL)
imagen-4.0-generate-001 gemini-2.5-flash-image (GA)
gemini-3.1-flash-image-preview (עם רמת חשיבה 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

העברת האפליקציה

בקטע הזה מוצגות דוגמאות לפני ואחרי המעבר ממודל Imagen למודל תמונות Gemini.

יצירת תמונה מטקסט

לוחצים על הספק Gemini API כדי לראות בדף הזה תוכן וקוד שספציפיים לספק.

כדי ליצור תמונה מטקסט, צריך להעביר את האפליקציה:

  • משתמשים במודל תמונה Gemini חלופי מתאים (לדוגמה, gemini-2.5-flash-image).

  • יוצרים מופע GenerativeModel (במקום מופע ImagenModel).

  • מעדכנים את אפשרויות ההגדרה של המודל כדי להתאים לGemini מודלים של תמונות.

    • כחלק מההגדרה הזו, צריך להגדיר את אופן התגובה ל-IMAGE.
      הערה: אפשר להגדיר מודלים של תמונות כך שיחזירו גם תמונות וגם טקסט.Gemini
  • (Vertex AI Gemini API בלבד) מעדכנים את המיקום שבו ניגשים למודל למיקום נתמך עבור מודלים של תמונות ב-Gemini. מומלץ global.

Swift

לפני


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)

אחרי


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

לפני


// 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()

אחרי


// 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

לפני


// 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());

אחרי


// 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

לפני


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];

אחרי


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

לפני


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.');
}

אחרי


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

לפני


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();

אחרי


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
  }
}

אפשרויות הגדרה של החלפה

בקטע הזה מתוארות אפשרויות להחלפת הגדרות שונות של המודל, כדי לעזור לכם לשלוט בתגובה של המודל.

הגדרות בטיחות

אתם מגדירים את הגדרות הבטיחות של מודלים של Imagen באמצעות ImagenSafetySettings. עם זאת, כדי להשתמש במודלים של תמונות ב-Gemini, צריך לעבור לשימוש ב-SafetySetting.

פרמטרים להגדרת המודל

אתם מגדירים מודלים של Imagen עם ImagenGenerationConfig. עם זאת, כדי להשתמש בGeminiמודלים של תמונות, צריך לעבור לשימוש ב-GenerationConfig ואופציונלית ב-ImageConfig מקונן (האפשרות הזו זמינה החל מגרסאות ה-SDK מתחילת מאי 2026).

כחלק מ-GenerationConfig, מגדירים את אופן התגובה ל-IMAGE (כפי שמוצג בדוגמאות הקוד 'אחרי' שמופיעות בהמשך המדריך). שימו לב שאפשר גם להגדיר את Gemini מודלים של תמונות כך שיחזירו גם IMAGE וגם TEXT.

בטבלה הבאה מוסבר איך להעביר את פרמטרי ההגדרה של המודל מ-Imagen אל Gemini מודלים של תמונות:

דגמי רכבים של Imagen Gemini מודלים של תמונות (Nano Banana)
addWatermark

לא נתמך

Gemini מודלים של תמונות תמיד מחזירים תמונות שנוצרו עם סימן מים של SynthID.

aspectRatio

שימוש ב-aspectRatio ב-ImageConfig

דוגמאות קוד וערכים נתמכים אפשר למצוא במאמר הגדרת יצירת תמונות במדריך Gemini מודלים של תמונות.

imageFormat

לא נתמך

Gemini מודלים של תמונות תמיד מחזירים תמונות שנוצרו בפורמט PNG.

negativePrompt

לא נתמך

חשוב לזכור שהנחיות שליליות הן תכונה מדור קודם, ולא הייתה להן תמיכה מאז imagen-3.0-generate-002 (או על ידי אף אחד מהמודלים של Imagen 4).

numberOfImages

לא נתמך

Gemini מודלים של תמונות תמיד מחזירים תמונה אחת שנוצרה.
כדי לפתור את הבעיה, אפשר להריץ את היצירה בלולאה כדי להשיג את אותה התוצאה. שימו לב שאי אפשר להשתמש במספר המועמדים במקום.

personGeneration

לא נתמך

כברירת מחדל, מודלים של Gemini תמונות מאפשרים ליצור תמונות של אנשים.