Imagen ব্যবহার করে ছবি তৈরি করুন

Firebase AI Logic SDK গুলি আপনাকে Imagen মডেলগুলিতে অ্যাক্সেস দেয় ( Imagen API এর মাধ্যমে) যাতে আপনি একটি টেক্সট প্রম্পট থেকে ছবি তৈরি করতে পারেন। এই ক্ষমতার সাহায্যে, আপনি নিম্নলিখিত কাজগুলি করতে পারেন:

  • প্রাকৃতিক ভাষায় লেখা প্রম্পট থেকে ছবি তৈরি করুন।
  • বিভিন্ন ধরণের ফর্ম্যাট এবং স্টাইলে ছবি তৈরি করুন
  • ছবিতে টেক্সট রেন্ডার করুন

এই নির্দেশিকাটিতে কেবল একটি টেক্সট প্রম্পট প্রদান করে ইমেজেন ব্যবহার করে কীভাবে ছবি তৈরি করা যায় তা বর্ণনা করা হয়েছে।

তবে মনে রাখবেন, Imagen তার কাস্টমাইজেশন ক্ষমতা ব্যবহার করে একটি রেফারেন্স ছবির উপর ভিত্তি করে ছবি তৈরি করতে পারে (বর্তমানে শুধুমাত্র Android এবং Flutter এর জন্য)। অনুরোধে, আপনি একটি টেক্সট প্রম্পট এবং একটি রেফারেন্স ছবি প্রদান করেন যা মডেলটিকে নির্দিষ্ট স্টাইল, বিষয় (যেমন একটি পণ্য, ব্যক্তি, বা প্রাণী), অথবা একটি নিয়ন্ত্রণের উপর ভিত্তি করে একটি নতুন ছবি তৈরি করতে নির্দেশ দেয়। উদাহরণস্বরূপ, আপনি একটি বিড়ালের ছবি বা একটি রকেট এবং চাঁদের অঙ্কন থেকে একটি নতুন ছবি তৈরি করতে পারেন।

শুধুমাত্র টেক্সট ইনপুটের জন্য কোডে যান

জেমিনি এবং ইমেজেন মডেলের মধ্যে নির্বাচন করা

ফায়ারবেস এআই লজিক এসডিকেগুলি জেমিনি মডেল অথবা ইমেজেন মডেল ব্যবহার করে ছবি তৈরি এবং সম্পাদনা সমর্থন করে।

বেশিরভাগ ব্যবহারের ক্ষেত্রে, Gemini দিয়ে শুরু করুন , এবং তারপর শুধুমাত্র বিশেষায়িত কাজের জন্য Imagen বেছে নিন যেখানে ছবির মান অত্যন্ত গুরুত্বপূর্ণ।

যখন ইচ্ছা মিথুন রাশি বেছে নিন:

  • প্রাসঙ্গিকভাবে প্রাসঙ্গিক চিত্র তৈরি করতে বিশ্ব জ্ঞান এবং যুক্তি ব্যবহার করা।
  • টেক্সট এবং ইমেজ নির্বিঘ্নে মিশ্রিত করতে অথবা টেক্সট এবং ইমেজ আউটপুটকে ইন্টারলিভ করতে।
  • দীর্ঘ টেক্সট সিকোয়েন্সের মধ্যে নির্ভুল ভিজ্যুয়াল এম্বেড করা।
  • প্রেক্ষাপট বজায় রেখে কথোপকথনের মাধ্যমে ছবি সম্পাদনা করা।

যখন ইচ্ছা Imagen বেছে নিন:

  • ছবির মান, ফটোরিয়ালিজম, শৈল্পিক বিবরণ, অথবা নির্দিষ্ট শৈলী (যেমন, ইম্প্রেশনিজম বা অ্যানিমে) অগ্রাধিকার দিতে।
  • ব্র্যান্ডিং, স্টাইল, অথবা লোগো এবং পণ্য ডিজাইন তৈরি করা।
  • জেনারেট করা ছবির আকৃতির অনুপাত বা বিন্যাস স্পষ্টভাবে উল্লেখ করতে।

শুরু করার আগে

এই পৃষ্ঠায় প্রোভাইডার-নির্দিষ্ট কন্টেন্ট এবং কোড দেখতে আপনার জেমিনি API প্রোভাইডারে ক্লিক করুন।

যদি আপনি ইতিমধ্যেই না করে থাকেন, তাহলে শুরু করার নির্দেশিকাটি সম্পূর্ণ করুন, যেখানে আপনার Firebase প্রকল্পটি কীভাবে সেট আপ করবেন, আপনার অ্যাপটিকে Firebase-এর সাথে সংযুক্ত করবেন, SDK যোগ করবেন, আপনার নির্বাচিত API প্রদানকারীর জন্য ব্যাকএন্ড পরিষেবা শুরু করবেন এবং একটি ImagenModel ইনস্ট্যান্স তৈরি করবেন তা বর্ণনা করা হয়েছে।

এই ক্ষমতা সমর্থন করে এমন মডেলগুলি

জেমিনি ডেভেলপার API সর্বশেষ স্থিতিশীল ইমেজেন মডেল দ্বারা চিত্র তৈরি সমর্থন করে। আপনি যেভাবেই জেমিনি ডেভেলপার API অ্যাক্সেস করুন না কেন, সমর্থিত ইমেজেন মডেলের এই সীমাবদ্ধতা প্রযোজ্য।

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

শুধুমাত্র টেক্সট ইনপুট থেকে ছবি তৈরি করুন

আপনি শুধুমাত্র টেক্সট দিয়ে প্রম্পট করে একটি ইমেজেন মডেলকে ছবি তৈরি করতে বলতে পারেন। আপনি একটি ছবি বা একাধিক ছবি তৈরি করতে পারেন।

আপনি ইমেজ জেনারেশনের জন্য অনেকগুলি ভিন্ন কনফিগারেশন বিকল্পও সেট করতে পারেন, যেমন অ্যাসপেক্ট রেশিও এবং ইমেজ ফর্ম্যাট।

শুধুমাত্র টেক্সট ইনপুট থেকে একটি ছবি তৈরি করুন

এই নমুনাটি চেষ্টা করার আগে, আপনার প্রকল্প এবং অ্যাপ সেট আপ করতে এই নির্দেশিকার "শুরু করার আগে" বিভাগটি সম্পূর্ণ করুন।
সেই বিভাগে, আপনি আপনার নির্বাচিত Gemini API প্রদানকারীর জন্য একটি বোতামে ক্লিক করবেন যাতে আপনি এই পৃষ্ঠায় প্রদানকারী-নির্দিষ্ট সামগ্রী দেখতে পান

আপনি শুধুমাত্র টেক্সট দিয়ে প্রম্পট করে একটি ইমেজেন মডেলকে একটি একক ছবি তৈরি করতে বলতে পারেন।

একটি 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();

মডেল কীভাবে নির্বাচন করবেন তা শিখুনআপনার ব্যবহারের ক্ষেত্রে এবং অ্যাপের জন্য উপযুক্ত।

শুধুমাত্র টেক্সট ইনপুট থেকে একাধিক ছবি তৈরি করুন

এই নমুনাটি চেষ্টা করার আগে, আপনার প্রকল্প এবং অ্যাপ সেট আপ করতে এই নির্দেশিকার "শুরু করার আগে" বিভাগটি সম্পূর্ণ করুন।
সেই বিভাগে, আপনি আপনার নির্বাচিত Gemini API প্রদানকারীর জন্য একটি বোতামে ক্লিক করবেন যাতে আপনি এই পৃষ্ঠায় প্রদানকারী-নির্দিষ্ট সামগ্রী দেখতে পান

ডিফল্টরূপে, Imagen মডেলগুলি প্রতি অনুরোধে কেবল একটি চিত্র তৈরি করে। তবে, আপনি ImagenModel ইনস্ট্যান্স তৈরি করার সময় একটি ImagenGenerationConfig প্রদান করে একটি 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());

মডেল কীভাবে নির্বাচন করবেন তা শিখুনআপনার ব্যবহারের ক্ষেত্রে এবং অ্যাপের জন্য উপযুক্ত।



সমর্থিত বৈশিষ্ট্য এবং প্রয়োজনীয়তা

ইমেজেন মডেলগুলি ইমেজ জেনারেশন সম্পর্কিত অনেক বৈশিষ্ট্য অফার করে। এই বিভাগে Firebase AI Logic সহ মডেলগুলি ব্যবহার করার সময় কী কী সমর্থিত তা বর্ণনা করা হয়েছে।

সমর্থিত ক্ষমতা এবং বৈশিষ্ট্য

ফায়ারবেস এআই লজিক ইমেজেন মডেলের এই বৈশিষ্ট্যগুলিকে সমর্থন করে:

ফায়ারবেস এআই লজিক ইমেজেন মডেলের এই উন্নত বৈশিষ্ট্যগুলিকে সমর্থন করে না :

  • ইনপুট টেক্সটের ভাষা নির্ধারণ করা

  • প্রম্পট রিরাইটার ( enhancePrompt প্যারামিটার) অক্ষম করা হচ্ছে। এর অর্থ হল একটি LLM-ভিত্তিক প্রম্পট রিরাইটিং টুল সর্বদা স্বয়ংক্রিয়ভাবে প্রদত্ত প্রম্পটে আরও বিশদ যোগ করবে যাতে উচ্চমানের ছবি সরবরাহ করা যায় যা প্রদত্ত প্রম্পটকে আরও ভালভাবে প্রতিফলিত করে।

  • মডেলের ( storageUri প্যারামিটার) প্রতিক্রিয়ার অংশ হিসেবে সরাসরি Google Cloud Storage একটি জেনারেট করা ছবি লেখা। পরিবর্তে, ছবিগুলি সর্বদা প্রতিক্রিয়াতে base64-এনকোডেড ইমেজ বাইট হিসাবে ফেরত পাঠানো হয়।
    আপনি যদি Cloud Storage একটি জেনারেট করা ছবি আপলোড করতে চান, তাহলে আপনি Cloud Storage for Firebase ব্যবহার করতে পারেন।

স্পেসিফিকেশন এবং সীমাবদ্ধতা

সম্পত্তি (প্রতি অনুরোধ) মূল্য
ইনপুট টোকেনের সর্বাধিক সংখ্যা ৪৮০ টোকেন
আউটপুট ছবির সর্বোচ্চ সংখ্যা ৪টি ছবি
সমর্থিত আউটপুট ছবির রেজোলিউশন (পিক্সেল)
  • ১০২৪x১০২৪ পিক্সেল (১:১ আকৃতির অনুপাত)
  • ৮৯৬x১২৮০ (৩:৪ আকৃতির অনুপাত)
  • ১২৮০x৮৯৬ (৪:৩ আকৃতির অনুপাত)
  • ৭৬৮x১৪০৮ (৯:১৬ আকৃতির অনুপাত)
  • ১৪০৮x৭৬৮ (১৬:৯ আকৃতির অনুপাত)



তুমি আর কি করতে পারো?

কন্টেন্ট তৈরি কীভাবে নিয়ন্ত্রণ করতে হয় তা শিখুন

সমর্থিত মডেলগুলি সম্পর্কে আরও জানুন

বিভিন্ন ব্যবহারের ক্ষেত্রে উপলব্ধ মডেল এবং তাদের কোটা এবং মূল্য সম্পর্কে জানুন।


Firebase AI Logic এর সাথে আপনার অভিজ্ঞতা সম্পর্কে মতামত দিন।