โมเดล 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 (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 |
ย้ายข้อมูลแอป
ส่วนนี้แสดงตัวอย่างก่อนและหลังการย้ายข้อมูลจากโมเดล 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)
ตั้งค่ารูปแบบการตอบกลับเป็น IMAGE ซึ่งเป็นส่วนหนึ่งของ GenerationConfig (ดังที่แสดงในตัวอย่างโค้ด "หลัง" ก่อนหน้านี้ในคำแนะนำนี้) โปรดทราบว่าคุณสามารถกำหนดค่าโมเดลรูปภาพ
Geminiให้แสดงผลทั้งIMAGE และ TEXTได้ (ไม่บังคับ)
ดูตารางต่อไปนี้เพื่อทำความเข้าใจวิธีย้ายข้อมูลพารามิเตอร์การกำหนดค่าโมเดล จาก Imagen ไปเป็นโมเดลรูปภาพของ Gemini
| โมเดล Imagen | โมเดลรูปภาพของ Gemini ("Nano Banana") |
|---|---|
addWatermark |
ไม่รองรับ โมเดลรูปภาพ Gemini จะแสดงผลรูปภาพที่สร้างขึ้นพร้อมลายน้ำ SynthID เสมอ |
aspectRatio |
ใช้ ดูตัวอย่างโค้ดและค่าที่รองรับได้ที่ หัวข้อกำหนดค่าการสร้างรูปภาพ ในคำแนะนำโมเดลรูปภาพของ Gemini |
imageFormat |
ไม่รองรับ โมเดลรูปภาพ Gemini จะแสดงผลรูปภาพที่สร้างขึ้นใน รูปแบบ PNG เสมอ |
negativePrompt |
ไม่รองรับ
โปรดทราบว่าพรอมต์เชิงลบเป็นฟีเจอร์เก่าและไม่ได้รับการรองรับมาตั้งแต่
|
numberOfImages |
ไม่รองรับ
Gemini โมเดลรูปภาพจะแสดงผลรูปภาพที่สร้างขึ้นเพียงรูปเดียวเสมอ
|
personGeneration |
ไม่รองรับ โมเดลรูปภาพของ Gemini อนุญาตให้สร้างรูปภาพบุคคลโดยค่าเริ่มต้น |