Migrate from Imagen to a Gemini Image model ("Nano Banana")


All Imagen models are deprecated and will shut down on June 24, 2026. This deprecation and shutdown is applicable across Google and for both the Gemini Developer API and Vertex AI Gemini API .

Before this shutdown date, to avoid service disruption, you should migrate your apps from using Imagen models to using Gemini Image models (the "Nano Banana" models), as described in this guide.

If you have an urgent issue involving this deprecation and shutdown, reach out to Firebase Support .

Replacement Gemini Image models

Review the following table to choose a replacement Gemini Image model for your app.

Imagen model Gemini Image models ("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

Migrate your app

This section shows before and after examples for migrating from an Imagen model to a Gemini Image model.

Generate an image from text

Click your Gemini API provider to view provider-specific content and code on this page.

To generate an image from text, migrate your app:

  • Use an appropriate replacement Gemini Image model (such as gemini-2.5-flash-image ).

  • Create a GenerativeModel instance (instead of an ImagenModel instance).

  • Update the model configuration options to accommodate Gemini Image models.

    • As part of this configuration, set a response modality of IMAGE .
      Note that Gemini Image models can be configured to return both images and text.
  • ( Vertex AI Gemini API only) Update the location where you access the model to a supported location for Gemini Image models. We recommend global .

Swift

Before

  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 
 ) 
 

After

  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

Before

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

After

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

Before

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

After

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

Before

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

After

  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

Before

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

After

  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

Before

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

After

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

Replacement configuration options

This section describes replacement options for various model configuration options to help control the response of the model.

Safety settings

You configure the safety settings for Imagen models using ImagenSafetySettings . However, for Gemini Image models, you need to migrate to using SafetySetting .

Model configuration parameters

You configure Imagen models with an ImagenGenerationConfig . However, for Gemini Image models, you need to migrate to using a GenerationConfig and optionally a nested ImageConfig (this is available starting with the early May 2026 versions of the SDKs).

As part of the GenerationConfig , set a response modality of IMAGE (as shown in the "after" code samples earlier in this guide). Note that you can optionally configure Gemini Image models to return both IMAGE and TEXT .

Review the following table to understand how to migrate your model configuration parameters from Imagen to Gemini Image models:

Imagen models Gemini Image models ("Nano Banana")
addWatermark

Not supported

Gemini Image models always return generated images with a SynthID watermark.

aspectRatio

Use aspectRatio in an ImageConfig

For code samples and supported values, see Configure image generation in the Gemini Image models guide.

imageFormat

Not supported

Gemini Image models always return generated images in PNG format.

negativePrompt

Not supported

Note that negative prompts are a legacy feature, and they haven't been supported since imagen-3.0-generate-002 (or by any of the Imagen 4 models).

numberOfImages

Not supported

Gemini Image models always return a single generated image.
As a workaround, you can run your generation in a loop to achieve the same result. Note that candidate count doesn't work as a replacement.

personGeneration

Not supported

By default, Gemini Image models allow generating images of people.

Design a Mobile Site
View Site in Mobile | Classic
Share by: