Imagen'dan Gemini görüntü modeline ("Nano Banana") geçiş yapma

ImagenGemini


Tüm Imagen modellerinin desteği sonlandırıldı ve 24 Haziran 2026'da kullanımdan kaldırılacak. Bu desteğin sonlandırılması ve kullanımdan kaldırma işlemi, Google genelinde ve hem Gemini Developer API hem de Vertex AI Gemini API için geçerlidir.

Hizmet kesintisi yaşamamak için bu kapatma tarihinden önce uygulamalarınızı bu kılavuzda açıklandığı şekilde Imagen modelleri yerine Gemini görüntü modellerini ("Nano Banana" modelleri) kullanacak şekilde taşımanız gerekir.

Bu desteğin sonlandırılması ve kapatılmasıyla ilgili acil bir sorununuz varsa Firebase Destek Ekibi ile iletişime geçin.

Değiştirme Gemini Görüntü modelleri

Uygulamanız için Gemini görüntü modeli seçmek üzere aşağıdaki tabloyu inceleyin.

Imagen modeli Gemini Görüntü modelleri ("Nano Banana")
imagen-4.0-fast-generate-001 gemini-2.5-flash-image (GA)
gemini-3.1-flash-image-preview (with thinking level MINIMAL)
imagen-4.0-generate-001 gemini-2.5-flash-image (GA)
gemini-3.1-flash-image-preview (with thinking level 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

Uygulamanızı taşıma

Bu bölümde, Imagen modelinden Gemini Image modeline geçişle ilgili öncesi ve sonrası örnekleri gösterilmektedir.

Metinden resim üretme

Sağlayıcıya özel içeriği ve kodu bu sayfada görüntülemek için Gemini API sağlayıcınızı tıklayın.

Metinden resim üretmek için uygulamanızı taşıyın:

  • Uygun bir değiştirme Gemini görüntü modeli kullanın (ör. gemini-2.5-flash-image).

  • GenerativeModel örneği (ImagenModel örneği yerine) oluşturun.

  • Gemini Resim modellerini desteklemek için model yapılandırma seçeneklerini güncelleyin.

    • Bu yapılandırma kapsamında, yanıt biçimini IMAGE olarak ayarlayın.
      Gemini görüntü modellerinin hem görüntü hem de metin döndürecek şekilde yapılandırılabileceğini unutmayın.
  • (Yalnızca Vertex AI Gemini API) Gemini görüntü modelleri için modele eriştiğiniz konumu desteklenen bir konumla güncelleyin. global kullanmanızı öneririz.

Swift

Önce


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)

Sonra


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

Önce


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

Sonra


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

Önce


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

Sonra


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

Önce


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

Sonra


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

Önce


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

Sonra


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

Önce


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

Sonra


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

Değiştirme yapılandırma seçenekleri

Bu bölümde, modelin yanıtını kontrol etmeye yardımcı olmak için çeşitli model yapılandırma seçeneklerine yönelik değiştirme seçenekleri açıklanmaktadır.

Güvenlik ayarları

Imagen modellerinin güvenlik ayarlarını ImagenSafetySettings kullanarak yapılandırabilirsiniz. Ancak Gemini görüntü modelleri için SafetySetting'ı kullanmaya geçmeniz gerekir.

Model yapılandırma parametreleri

Imagen modellerini ImagenGenerationConfig ile yapılandırabilirsiniz. Ancak Gemini görüntü modelleri için GenerationConfig ve isteğe bağlı olarak iç içe yerleştirilmiş bir ImageConfig kullanmaya geçmeniz gerekir (Bu özellik, SDK'ların Mayıs 2026'nın başlarında yayınlanan sürümlerinden itibaren kullanılabilir).

GenerationConfig kapsamında, IMAGE yanıt biçimini ayarlayın (bu kılavuzun önceki bölümlerindeki "sonra" kod örneklerinde gösterildiği gibi). İsteğe bağlı olarak Gemini görüntü modellerini hem IMAGE hem de TEXT döndürecek şekilde yapılandırabilirsiniz.

Model yapılandırma parametrelerinizi Imagen'dan Gemini görüntü modellerine nasıl taşıyacağınızı anlamak için aşağıdaki tabloyu inceleyin:

Imagen modelleri Gemini Görüntü modelleri ("Nano Banana")
addWatermark

Desteklenmiyor

Gemini Görüntü modelleri, her zaman SynthID filigranı içeren görüntüler oluşturur.

aspectRatio

aspectRatio uygulamasını ImageConfig üzerinde kullanma

Kod örnekleri ve desteklenen değerler için GeminiGörüntü modelleri kılavuzundaki Görüntü oluşturmayı yapılandırma bölümüne bakın.

imageFormat

Desteklenmiyor

Gemini Resim modelleri, oluşturulan resimleri her zaman PNG biçiminde döndürür.

negativePrompt

Desteklenmiyor

Olumsuz istemlerin eski bir özellik olduğunu ve imagen-3.0-generate-002'ten beri (veya Imagen 4 modellerinden herhangi biri tarafından) desteklenmediğini unutmayın.

numberOfImages

Desteklenmiyor

Gemini Görüntü modelleri her zaman tek bir oluşturulmuş görüntü döndürür.
Geçici bir çözüm olarak, aynı sonucu elde etmek için oluşturma işleminizi döngüde çalıştırabilirsiniz. Aday sayısının yerine geçmediğini unutmayın.

personGeneration

Desteklenmiyor

Gemini Görüntü modelleri, varsayılan olarak insanların resimlerini üretmeye olanak tanır.