با استفاده از Imagen تصاویر تولید کنید

کیت‌های توسعه نرم‌افزار (SDK) فایربیس هوش مصنوعی لاجیک (Firebase AI Logic) به شما امکان دسترسی به مدل‌های ایمیجِن (Imagen) را می‌دهند (از طریق Imagen API ) تا بتوانید تصاویر را از یک اعلان متنی تولید کنید. با این قابلیت، می‌توانید کارهایی مانند موارد زیر را انجام دهید:

  • تولید تصاویر از دستورالعمل‌های نوشته شده به زبان طبیعی
  • تولید تصاویر در طیف گسترده‌ای از فرمت‌ها و سبک‌ها
  • نمایش متن در تصاویر

این راهنما نحوه تولید تصاویر با استفاده از Imagen را تنها با ارائه یک متن توضیح می‌دهد.

البته توجه داشته باشید که Imagen می‌تواند با استفاده از قابلیت سفارشی‌سازی خود (در حال حاضر فقط برای اندروید و فلاتر) تصاویر را بر اساس یک تصویر مرجع نیز تولید کند. در درخواست، شما یک متن و یک تصویر مرجع ارائه می‌دهید که مدل را برای تولید یک تصویر جدید بر اساس سبک، موضوع (مانند یک محصول، شخص یا حیوان) یا یک کنترل مشخص شده راهنمایی می‌کند. به عنوان مثال، می‌توانید یک تصویر جدید از عکس یک گربه یا نقاشی یک موشک و ماه تولید کنید.

به کد برای ورودی فقط متن

انتخاب بین مدل‌های Gemini و Imagen

کیت‌های توسعه نرم‌افزار (SDK) فایربیس آی لاجیک (Firebase AI Logic) از تولید و ویرایش تصویر با استفاده از مدل جمینی (Gemini) یا مدل ایمیجن (Imagen) پشتیبانی می‌کنند.

برای اکثر موارد استفاده، با Gemini شروع کنید و سپس Imagen را فقط برای کارهای تخصصی که کیفیت تصویر بسیار مهم است انتخاب کنید.

وقتی می‌خواهید، جمینی را انتخاب کنید:

  • استفاده از دانش و استدلال جهانی برای تولید تصاویر مرتبط با متن.
  • برای ترکیب یکپارچه متن و تصاویر یا قرار دادن متن و تصویر در خروجی.
  • برای جاسازی تصاویر دقیق در توالی‌های متنی طولانی.
  • برای ویرایش تصاویر به صورت محاوره‌ای و در عین حال حفظ زمینه.

وقتی می‌خواهید Imagen را انتخاب کنید:

  • اولویت‌بندی کیفیت تصویر، واقع‌گرایی نوری، جزئیات هنری یا سبک‌های خاص (مثلاً امپرسیونیسم یا انیمه).
  • برای القای برندسازی، سبک یا تولید لوگو و طرح‌های محصول.
  • برای مشخص کردن صریح نسبت ابعاد یا قالب تصاویر تولید شده.

قبل از اینکه شروع کنی

برای مشاهده محتوا و کد مخصوص ارائه‌دهنده در این صفحه، روی ارائه‌دهنده API Gemini خود کلیک کنید.

اگر هنوز این کار را نکرده‌اید، راهنمای شروع به کار را تکمیل کنید، که نحوه راه‌اندازی پروژه Firebase، اتصال برنامه به Firebase، افزودن SDK، راه‌اندازی سرویس backend برای ارائه‌دهنده API انتخابی شما و ایجاد یک نمونه ImagenModel شرح می‌دهد.

مدل‌هایی که از این قابلیت پشتیبانی می‌کنند

رابط برنامه‌نویسی نرم‌افزار Gemini Developer از تولید تصویر توسط جدیدترین مدل‌های پایدار Imagen پشتیبانی می‌کند. این محدودیت مدل‌های Imagen پشتیبانی‌شده صرف‌نظر از نحوه دسترسی شما به رابط برنامه‌نویسی نرم‌افزار Gemini Developer اعمال می‌شود.

  • imagen-4.0-generate-001
  • imagen-4.0-fast-generate-001
  • imagen-4.0-ultra-generate-001
  • imagen-3.0-generate-002

تولید تصاویر از ورودی فقط متنی

شما می‌توانید از یک مدل Imagen بخواهید که تنها با ارسال متن، تصاویر را تولید کند. می‌توانید یک تصویر یا چندین تصویر تولید کنید.

همچنین می‌توانید گزینه‌های پیکربندی مختلفی را برای تولید تصویر ، مانند نسبت ابعاد و فرمت تصویر، تنظیم کنید.

تولید یک تصویر از ورودی فقط متنی

قبل از امتحان کردن این نمونه، بخش «قبل از شروع» این راهنما را برای راه‌اندازی پروژه و برنامه خود تکمیل کنید.
در آن بخش، شما همچنین می‌توانید روی دکمه‌ای برای ارائه‌دهنده‌ی API Gemini انتخابی خود کلیک کنید تا محتوای خاص ارائه‌دهنده را در این صفحه مشاهده کنید .

شما می‌توانید از یک مدل Imagen بخواهید که تنها با ارسال متن، یک تصویر واحد تولید کند.

حتماً یک نمونه ImagenModel ایجاد کنید و generateImages فراخوانی کنید.

سویفت


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

وحدت


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

یاد بگیرید که چگونه یک مدل را انتخاب کنیدمناسب برای مورد استفاده و برنامه شما.

تولید چندین تصویر از ورودی فقط متنی

قبل از امتحان کردن این نمونه، بخش «قبل از شروع» این راهنما را برای راه‌اندازی پروژه و برنامه خود تکمیل کنید.
در آن بخش، شما همچنین می‌توانید روی دکمه‌ای برای ارائه‌دهنده‌ی API Gemini انتخابی خود کلیک کنید تا محتوای خاص ارائه‌دهنده را در این صفحه مشاهده کنید .

به طور پیش‌فرض، مدل‌های Imagen فقط یک تصویر در هر درخواست تولید می‌کنند. با این حال، می‌توانید با ارائه ImagenGenerationConfig هنگام ایجاد نمونه ImagenModel ، از یک مدل Imagen بخواهید که در هر درخواست چندین تصویر تولید کند.

حتماً یک نمونه ImagenModel ایجاد کنید و generateImages فراخوانی کنید.

سویفت


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

وحدت


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

یاد بگیرید که چگونه یک مدل را انتخاب کنیدمناسب برای مورد استفاده و برنامه شما.



ویژگی‌ها و الزامات پشتیبانی‌شده

مدل‌های Imagen ویژگی‌های زیادی در رابطه با تولید تصویر ارائه می‌دهند. این بخش مواردی را که هنگام استفاده از مدل‌ها با Firebase AI Logic پشتیبانی می‌شوند، شرح می‌دهد.

قابلیت‌ها و ویژگی‌های پشتیبانی‌شده

منطق هوش مصنوعی فایربیس از این ویژگی‌های مدل‌های ایمیجِن پشتیبانی می‌کند:

Firebase AI Logic از این ویژگی‌های پیشرفته مدل‌های Imagen پشتیبانی نمی‌کند :

  • تنظیم زبان متن ورودی

  • غیرفعال کردن بازنویسی اعلان (پارامتر enhancePrompt ). این بدان معناست که یک ابزار بازنویسی اعلان مبتنی بر LLM همیشه به طور خودکار جزئیات بیشتری را به اعلان ارائه شده اضافه می‌کند تا تصاویر با کیفیت بالاتری را ارائه دهد که بهتر منعکس کننده اعلان ارائه شده باشند.

  • نوشتن یک تصویر تولید شده مستقیماً در Google Cloud Storage به عنوان بخشی از پاسخ مدل (پارامتر storageUri ). در عوض، تصاویر همیشه به صورت بایت‌های تصویر کدگذاری شده با base64 در پاسخ بازگردانده می‌شوند.
    اگر می‌خواهید تصویر تولید شده را در Cloud Storage آپلود کنید، می‌توانید از Cloud Storage for Firebase استفاده کنید.

مشخصات و محدودیت‌ها

ملک (به ازای هر درخواست) ارزش
حداکثر تعداد توکن‌های ورودی ۴۸۰ توکن
حداکثر تعداد تصاویر خروجی ۴ تصویر
وضوح تصویر خروجی پشتیبانی شده (پیکسل)
  • ۱۰۲۴x۱۰۲۴ پیکسل (نسبت تصویر ۱:۱)
  • ۸۹۶x۱۲۸۰ (نسبت تصویر ۳:۴)
  • ۱۲۸۰x۸۹۶ (نسبت تصویر ۴:۳)
  • ۷۶۸x۱۴۰۸ (نسبت تصویر ۹:۱۶)
  • ۱۴۰۸x۷۶۸ (نسبت تصویر ۱۶:۹)



چه کار دیگری می‌توانید انجام دهید؟

  • شروع به فکر کردن در مورد آماده‌سازی برای تولید کنید (به چک لیست تولید مراجعه کنید)، از جمله:

آموزش کنترل تولید محتوا

درباره مدل‌های پشتیبانی‌شده بیشتر بدانید

درباره مدل‌های موجود برای موارد استفاده مختلف و سهمیه‌ها و قیمت‌گذاری آنها اطلاعات کسب کنید.


درباره تجربه خود با Firebase AI Logic بازخورد دهید