SDK memberi Anda akses ke model (melalui) sehingga Anda dapat membuat gambar dari perintah teks.Firebase AI LogicImagenImagen API Dengan kemampuan ini, Anda dapat melakukan hal-hal seperti:
- Membuat gambar dari perintah yang ditulis dalam bahasa alami
- Membuat gambar dalam berbagai format dan gaya
- Merender teks dalam gambar
Panduan ini menjelaskan cara membuat gambar menggunakan Imagen hanya dengan memberikan perintah teks.
Namun, perhatikan bahwa Imagen juga dapat membuat gambar berdasarkan gambar referensi menggunakan kemampuan penyesuaian (saat ini hanya untuk Android dan Flutter). Dalam permintaan, Anda memberikan perintah teks dan gambar referensi yang memandu model untuk membuat gambar baru berdasarkan gaya, subjek (seperti produk, orang, atau hewan), atau kontrol yang ditentukan. Misalnya, Anda dapat membuat gambar baru dari foto kucing atau gambar roket dan bulan.
Langsung ke kode untuk input khusus teks
Sebelum memulai
|
Klik penyedia Gemini API untuk melihat konten khusus penyedia dan kode di halaman ini. |
Jika belum, selesaikan
panduan memulai, yang menjelaskan cara
menyiapkan project Firebase, menghubungkan aplikasi ke Firebase, menambahkan SDK,
menginisialisasi layanan backend untuk penyedia API yang Anda pilih, dan
membuat instance ImagenModel.
Model yang mendukung kemampuan ini
Gemini Developer API mendukung pembuatan gambar oleh model stabil Imagen terbaru. Batasan model yang didukung ini berlaku terlepas dari cara Anda mengaksesImagen Gemini Developer API.
imagen-4.0-generate-001imagen-4.0-fast-generate-001imagen-4.0-ultra-generate-001imagen-3.0-generate-002
Membuat gambar dari input khusus teks
Anda dapat meminta model Imagen untuk membuat gambar dengan hanya memberikan perintah teks. Anda dapat membuat satu gambar atau beberapa gambar.
Anda juga dapat menetapkan banyak opsi konfigurasi yang berbeda untuk pembuatan gambar, seperti rasio aspek dan format gambar.
Membuat satu gambar dari input khusus teks
|
Sebelum mencoba contoh ini, selesaikan bagian
Sebelum memulai dari panduan ini
untuk menyiapkan project dan aplikasi Anda. Di bagian tersebut, Anda juga akan mengklik tombol untuk Gemini API yang Anda pilih sehingga Anda melihat konten khusus penyedia di halaman ini. |
Anda dapat meminta model Imagen untuk membuat satu gambar dengan hanya memberikan perintah teks.
Pastikan untuk membuat instance ImagenModel dan memanggil generateImages.
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-4.0-generate-001")
// 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)
Kotlin
suspend fun generateImage() {
// 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-4.0-generate-001")
// 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()
}
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-4.0-generate-001");
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<ImagenInlineImage>>() {
@Override
public void onSuccess(ImagenGenerationResponse<ImagenInlineImage> 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());
Web
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";
// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
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-4.0-generate-001" });
// 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];
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 model = FirebaseAI.googleAI();
// Create an `ImagenModel` instance with an Imagen model that supports your use case
final model = ai.imagenModel(model: 'imagen-4.0-generate-001');
// 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.');
}
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-4.0-generate-001");
// 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();
Pelajari cara memilih model yang sesuai untuk kasus penggunaan dan aplikasi Anda.
Membuat beberapa gambar dari input khusus teks
|
Sebelum mencoba contoh ini, selesaikan bagian
Sebelum memulai dari panduan ini
untuk menyiapkan project dan aplikasi Anda. Di bagian tersebut, Anda juga akan mengklik tombol untuk Gemini API yang Anda pilih sehingga Anda melihat konten khusus penyedia di halaman ini. |
Secara default, model Imagen hanya membuat satu gambar per permintaan.
Namun, Anda dapat meminta model Imagen untuk membuat beberapa gambar
per permintaan dengan memberikan
ImagenGenerationConfig
saat membuat instance ImagenModel.
Pastikan untuk membuat instance ImagenModel dan memanggil generateImages.
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-4.0-generate-001",
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/ai-logic/model-parameters
generationConfig: ImagenGenerationConfig(numberOfImages: 4)
)
// Provide an image generation prompt
let prompt = "An astronaut riding a horse"
// To generate images, call `generateImages` with the text prompt
let response = try await model.generateImages(prompt: prompt)
// If fewer images were generated than were requested,
// then `filteredReason` will describe the reason they were filtered out
if let filteredReason = response.filteredReason {
print(filteredReason)
}
// Handle the generated images
let uiImages = response.images.compactMap { UIImage(data: $0.data) }
Kotlin
suspend fun generateImage() {
// 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(
modelName = "imagen-4.0-generate-001",
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/ai-logic/model-parameters
generationConfig = ImagenGenerationConfig(numberOfImages = 4)
)
// Provide an image generation prompt
val prompt = "An astronaut riding a horse"
// To generate images, call `generateImages` with the text prompt
val imageResponse = model.generateImages(prompt)
// If fewer images were generated than were requested,
// then `filteredReason` will describe the reason they were filtered out
if (imageResponse.filteredReason != null) {
Log.d(TAG, "FilteredReason: ${imageResponse.filteredReason}")
}
for (image in imageResponse.images) {
val bitmap = image.asBitmap()
// Use the bitmap to display the image in your UI
}
}
Java
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/ai-logic/model-parameters
ImagenGenerationConfig imagenGenerationConfig = new ImagenGenerationConfig.Builder()
.setNumberOfImages(4)
.build();
// 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-4.0-generate-001",
/* imageGenerationConfig */ imagenGenerationConfig);
ImagenModelFutures model = ImagenModelFutures.from(imagenModel);
// Provide an image generation prompt
String prompt = "An astronaut riding a horse";
// To generate images, call `generateImages` with the text prompt
Futures.addCallback(model.generateImages(prompt), new FutureCallback<ImagenGenerationResponse<ImagenInlineImage>>() {
@Override
public void onSuccess(ImagenGenerationResponse<ImagenInlineImage> result) {
// If fewer images were generated than were requested,
// then `filteredReason` will describe the reason they were filtered out
if (result.getFilteredReason() != null){
Log.d("TAG", "FilteredReason: " + result.getFilteredReason());
}
// Handle the generated images
List<ImagenInlineImage> images = result.getImages();
for (ImagenInlineImage image : images) {
Bitmap bitmap = image.asBitmap();
// Use the bitmap to display the image in your UI
}
}
@Override
public void onFailure(Throwable t) {
// ...
}
}, Executors.newSingleThreadExecutor());
Web
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";
// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
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-4.0-generate-001",
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/ai-logic/model-parameters
generationConfig: {
numberOfImages: 4
}
}
);
// Provide an image generation prompt
const prompt = "An astronaut riding a horse.";
// To generate images, 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 images = response.images[0];
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-4.0-generate-001',
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/ai-logic/model-parameters
generationConfig: ImagenGenerationConfig(numberOfImages: 4),
);
// Provide an image generation prompt
const prompt = 'An astronaut riding a horse.';
// To generate images, call `generateImages` with the text prompt
final 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 != null) {
print(response.filteredReason);
}
if (response.images.isNotEmpty) {
final images = response.images;
for(var image in images) {
// 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-4.0-generate-001",
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/ai-logic/model-parameters
generationConfig: new ImagenGenerationConfig(numberOfImages: 4)
);
// 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);
// If fewer images were generated than were requested,
// then `filteredReason` will describe the reason they were filtered out
if (!string.IsNullOrEmpty(response.FilteredReason)) {
UnityEngine.Debug.Log("Filtered reason: " + response.FilteredReason);
}
// Handle the generated images
var images = response.Images.Select(image => image.AsTexture2D());
Pelajari cara memilih model yang sesuai untuk kasus penggunaan dan aplikasi Anda.
Persyaratan dan fitur yang didukung
Model Imagen menawarkan banyak fitur terkait pembuatan gambar. Bagian ini menjelaskan apa yang didukung saat menggunakan model dengan Firebase AI Logic.
Kemampuan dan fitur yang didukung
.Firebase AI Logic mendukung fitur model Imagen berikut:
Membuat orang, wajah, dan teks dalam gambar yang dibuat
Mengedit gambar atau menyertakan gambar dalam permintaan saat menggunakan Vertex AI Gemini API (saat ini hanya untuk Android dan Flutter)
Menambahkan watermark ke gambar yang dibuat
Memverifikasi watermark digital saat menggunakan Vertex AI Gemini API
Jika ingin memverifikasi bahwa gambar memiliki watermark, Anda dapat mengupload gambar ke Vertex AI Studio menggunakan tab Media.Mengonfigurasi parameter pembuatan gambar, seperti jumlah gambar yang dibuat, rasio aspek, dan watermark
Mengonfigurasi setelan keamanan
Firebase AI Logic tidak mendukung fitur lanjutan model Imagen berikut:
Menonaktifkan penulis ulang perintah (parameter
enhancePrompt). Artinya, alat penulisan ulang perintah berbasis LLM akan selalu otomatis menambahkan detail ke perintah yang diberikan untuk memberikan gambar berkualitas lebih tinggi yang lebih mencerminkan perintah yang diberikan.Menulis gambar yang dibuat langsung ke Google Cloud Storage sebagai bagian dari respons dari model (parameter
storageUri). Sebagai gantinya, gambar selalu ditampilkan sebagai byte gambar berenkode base64 dalam respons.
Jika ingin mengupload gambar yang dibuat ke Cloud Storage, Anda dapat menggunakan Cloud Storage for Firebase.
Spesifikasi dan batasan
| Properti (per permintaan) | Nilai |
|---|---|
| Jumlah maksimum token input | 480 token |
| Jumlah maksimum gambar output | 4 gambar |
| Resolusi gambar output yang didukung (piksel) |
|
Kamu bisa apa lagi?
-
Mulai pikirkan persiapan untuk produksi (lihat
checklist produksi):
- Siapkan Firebase App Check sesegera mungkin untuk melindungi Gemini API dari penyalahgunaan oleh klien yang tidak sah.
- Integrasikan Firebase Remote Config untuk memperbarui nilai dalam aplikasi Anda (seperti nama model) tanpa merilis versi aplikasi baru.
Pelajari cara mengontrol pembuatan konten
- Pahami desain perintah, termasuk praktik terbaik, strategi, dan contoh perintah.
- Konfigurasikan parameter model Imagen seperti rasio aspek, pembuatan orang, dan watermark.
- Gunakan setelan keamanan untuk menyesuaikan kemungkinan mendapatkan respons yang mungkin dianggap berbahaya.
Pelajari lebih lanjut model yang didukung
Pelajari tentang model yang tersedia untuk berbagai kasus penggunaan serta kuota dan harganya.Berikan masukan tentang pengalaman Anda dengan Firebase AI Logic