Imagen'i kullanarak resim oluşturma


Firebase AI Logic SDK'ları, metin isteminden resim oluşturabilmeniz için Imagen 3 modellerine (Imagen API aracılığıyla) erişim sağlar. Bu özellik sayesinde şunları yapabilirsiniz:

  • Doğal dilde yazılmış istemlerden resim oluşturma
  • Çeşitli biçim ve stillerde resimler oluşturun
  • Resimlerdeki metni oluşturma

Firebase AI Logic'ün henüz Imagen modellerinde kullanılabilen tüm özellikleri desteklemediğini unutmayın. Bu sayfanın ilerleyen bölümlerinde yer alan Desteklenen özellikler ve özellikler bölümünden daha fazla bilgi edinebilirsiniz.

Yalnızca metin girişi için koda atlama

Başlamadan önce

Bu sayfada sağlayıcıya özgü içerikleri ve kodu görüntülemek için Gemini API sağlayıcınızı tıklayın.

Henüz yapmadıysanız Firebase projenizi oluşturma, uygulamanızı Firebase'e bağlama, SDK'yı ekleme, seçtiğiniz API sağlayıcısı için arka uç hizmetini başlatma ve ImagenModel örneği oluşturma hakkında bilgi veren başlangıç kılavuzunu tamamlayın.

Bu özelliği destekleyen modeller

Resim oluşturma, Imagen 3 modelleri tarafından desteklenir.

Firebase AI Logic, Gemini modelleri tarafından resim oluşturmayı da destekler. Yakında dokümanlar yayınlanacaktır.

Yalnızca metin girişinden resim oluşturma

Imagen modelinden metin isteğinde bulunarak görüntü oluşturmasını isteyebilirsiniz. Tek bir resim veya birden fazla resim oluşturabilirsiniz.

Yalnızca metin içeren girişten bir resim oluşturma

Bu örneği denemeden önce, projenizi ve uygulamanızı oluşturmak için bu kılavuzun Başlamadan önce bölümünü tamamlayın.
Bu sayfada sağlayıcıya özel içerikleri görmek için seçtiğiniz Gemini API sağlayıcının düğmesini de bu bölümde tıklayacaksınız.

Metin istemi vererek Imagen modelinden tek bir resim oluşturmasını isteyebilirsiniz.

ImagenModel örneği oluşturduğunuzdan ve generateImages işlevini çağırdığınızdan emin olun.

Swift


import FirebaseAI

// 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-3.0-generate-002")

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


// Using this SDK to access Imagen models is a Preview release and requires opt-in
@OptIn(PublicPreviewAPI::class)
suspend fun generateImage() {
  // Initialize the Gemini Developer API backend service
  // Create an `ImagenModel` instance with an Imagen model that supports your use case
  val imagenModel = Firebase.googleAI.imagenModel("imagen-3.0-generate-002")

  // Provide an image generation prompt
  val prompt = "An astronaut riding a horse"

  // To generate an image, call `generateImages` with the text prompt
  val imageResponse = imagenModel.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-3.0-generate-002");

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 3 model that supports your use case
const imagenModel = getImagenModel(ai, { model: "imagen-3.0-generate-002" });

// 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 imagenModel.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
// Create an `ImagenModel` instance with an Imagen model that supports your use case
final model =
  FirebaseAI.googleAI().imagenModel(model: 'imagen-3.0-generate-002');

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

Imagen henüz Unity için desteklenmemektedir. Kısa süre sonra tekrar kontrol edin.

Kullanım alanınıza ve uygulamanıza uygun bir model nasıl seçeceğinizi öğrenin.

Yalnızca metin içeren girişten birden fazla resim oluşturma

Bu örneği denemeden önce, projenizi ve uygulamanızı oluşturmak için bu kılavuzun Başlamadan önce bölümünü tamamlayın.
Bu sayfada sağlayıcıya özel içerikleri görmek için seçtiğiniz Gemini API sağlayıcının düğmesini de bu bölümde tıklayacaksınız.

Varsayılan olarak Imagen 3 modelleri istek başına yalnızca bir resim oluşturur. Ancak ImagenModel örneğini oluştururken ImagenGenerationConfig sağlayarak Imagen modelinden istek başına birden fazla resim oluşturmasını isteyebilirsiniz.

ImagenModel örneği oluşturduğunuzdan ve generateImages işlevini çağırdığınızdan emin olun.

Swift


import FirebaseAI

// 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-3.0-generate-002",
  // 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


// Using this SDK to access Imagen models is a Preview release and requires opt-in
@OptIn(PublicPreviewAPI::class)
suspend fun generateImage() {
  // Initialize the Gemini Developer API backend service
  // Create an `ImagenModel` instance with an Imagen model that supports your use case
  val imagenModel = Firebase.googleAI.imagenModel(
      modelName = "imagen-3.0-generate-002",
      // 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 = imagenModel.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-3.0-generate-002",
        /* 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 3 model that supports your use case
const imagenModel = getImagenModel(
  ai,
  {
    model: "imagen-3.0-generate-002",
    // 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 imagenModel.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
// Create an `ImagenModel` instance with an Imagen model that supports your use case
final model =
  FirebaseAI.googleAI().imagenModel(
    model: 'imagen-3.0-generate-002',
    // 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

Imagen henüz Unity için desteklenmemektedir. Kısa süre sonra tekrar kontrol edin.

Kullanım alanınıza ve uygulamanıza uygun bir model nasıl seçeceğinizi öğrenin.



Desteklenen özellikler ve gereksinimler

Imagen 3 modelleri, resim oluşturmayla ilgili birçok özellik sunar. Bu bölümde, Firebase AI Logic ile modelleri kullanırken desteklenenler açıklanmaktadır.

Desteklenen özellikler ve özellikler

Firebase AI Logic, Imagen 3 modellerinin bu özelliklerini destekler.

Firebase AI Logic, Imagen 3 modellerinin bu ileri seviye özelliklerini desteklemez.

Bu özelliklerin çoğunun, Imagen modellerini sunucu tarafında kullanırken bile onaylanmış bir kullanıcı listesinde yer almayı gerektirdiğini unutmayın.

  • Resim düzenleme veya değiştirme özellikleri (resimleri büyütme dahil)

  • Modele gönderilen isteğe resim ekleme (ör. az sayıda örnekle öğrenme için)

  • SDK'ları kullanarak dijital filigranları doğrulama
    Bir görüntünün filigran içerdiğini doğrulamak istiyorsanız görüntüyü Medya sekmesini kullanarak Vertex AI Studio'ya yükleyebilirsiniz.

  • Metinden "canlı resimler" oluşturma (MP4 oluşturma)

  • Önceden tanımlanmış bir stili kullanarak resim oluşturma

  • Giriş metninin dilini ayarlama

  • includeSafetyAttributes etkinleştirildiğinde safetyAttributes.categories ve safetyAttributes.scores iade edilemez.

  • İstem geliştirme'yi (enhancePrompt parametresi) devre dışı bırakmak. Bu durumda, LLM tabanlı bir istem yeniden yazma aracı, sağlanan istemi daha iyi yansıtan daha yüksek kaliteli resimler sunmak için her zaman sağlanan istemin üzerine otomatik olarak daha fazla ayrıntı ekler.

  • Oluşturulan resmi, modelden gelen yanıtın (storageUri parametresi) bir parçası olarak doğrudan Google Cloud Storage içine yazma. Bunun yerine, resimler yanıtta her zaman base64 kodlu resim baytları olarak döndürülür.
    Oluşturulan bir resmi Cloud Storage'a yüklemek istiyorsanız Cloud Storage for Firebase'ı kullanabilirsiniz.

Özellikler ve sınırlamalar

Sınırlar (istek başına) Imagen 3 Imagen 3 Fast
Maksimum giriş jetonu sayısı 480 jeton 480 jeton
Maksimum çıkış resmi sayısı 4 resim 4 resim
Desteklenen çıkış resim çözünürlükleri (piksel)
  • 1024x1024 piksel (1:1 en boy oranı)
  • 896x1280 (3:4 en boy oranı)
  • 1.280x896 (4:3 en boy oranı)
  • 768x1408 (9:16 en boy oranı)
  • 1.408x768 (16:9 en boy oranı)
  • 1024x1024 piksel (1:1 en boy oranı)
  • 896x1280 (3:4 en boy oranı)
  • 1.280x896 (4:3 en boy oranı)
  • 768x1408 (9:16 en boy oranı)
  • 1.408x768 (16:9 en boy oranı)



Başka neler yapabilirsiniz?

İçerik oluşturmayı nasıl kontrol edeceğinizi öğrenin

Desteklenen modeller hakkında daha fazla bilgi

Çeşitli kullanım alanları için kullanılabilen modeller, bunların kotaları ve fiyatlandırması hakkında bilgi edinin.


Firebase AI Logic ile ilgili deneyiminiz hakkında geri bildirim verme