ছবি তৈরি করুন

Gemini API জেমিনি 2.0 ফ্ল্যাশ পরীক্ষামূলক ব্যবহার করে এবং Imagen 3 ব্যবহার করে ইমেজ তৈরিকে সমর্থন করে। এই নির্দেশিকা আপনাকে উভয় মডেলের সাথে শুরু করতে সাহায্য করে।

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

জেমিনি 2.0 ফ্ল্যাশ এক্সপেরিমেন্টাল টেক্সট এবং ইনলাইন ইমেজ আউটপুট করার ক্ষমতা সমর্থন করে। এটি আপনাকে কথোপকথনমূলকভাবে চিত্রগুলি সম্পাদনা করতে বা অন্তর্নির্মিত পাঠ্যের সাথে আউটপুট তৈরি করতে মিথুন ব্যবহার করতে দেয় (উদাহরণস্বরূপ, একক পালা করে পাঠ্য এবং চিত্র সহ একটি ব্লগ পোস্ট তৈরি করা)। সমস্ত জেনারেট করা ছবিতে একটি SynthID ওয়াটারমার্ক রয়েছে, এবং Google AI স্টুডিওতে একটি দৃশ্যমান ওয়াটারমার্কও রয়েছে৷

নিচের উদাহরণটি দেখায় কিভাবে টেক্সট-এবং-ইমেজ আউটপুট তৈরি করতে Gemini 2.0 ব্যবহার করতে হয়:

from google import genai
from google.genai import types
from PIL import Image
from io import BytesIO
import base64

client = genai.Client()

contents = ('Hi, can you create a 3d rendered image of a pig '
            'with wings and a top hat flying over a happy '
            'futuristic scifi city with lots of greenery?')

response = client.models.generate_content(
    model="gemini-2.0-flash-exp-image-generation",
    contents=contents,
    config=types.GenerateContentConfig(
      response_modalities=['Text', 'Image']
    )
)

for part in response.candidates[0].content.parts:
  if part.text is not None:
    print(part.text)
  elif part.inline_data is not None:
    image = Image.open(BytesIO((part.inline_data.data)))
    image.save('gemini-native-image.png')
    image.show()
import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";

async function main() {

  const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });

  const contents =
    "Hi, can you create a 3d rendered image of a pig " +
    "with wings and a top hat flying over a happy " +
    "futuristic scifi city with lots of greenery?";

  // Set responseModalities to include "Image" so the model can generate  an image
  const response = await ai.models.generateContent({
    model: "gemini-2.0-flash-exp-image-generation",
    contents: contents,
    config: {
      responseModalities: ["Text", "Image"],
    },
  });
  for (const part of response.candidates[0].content.parts) {
    // Based on the part type, either show the text or save the image
    if (part.text) {
      console.log(part.text);
    } else if (part.inlineData) {
      const imageData = part.inlineData.data;
      const buffer = Buffer.from(imageData, "base64");
      fs.writeFileSync("gemini-native-image.png", buffer);
      console.log("Image saved as gemini-native-image.png");
    }
  }
}

main();
curl -s -X POST \
  "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp-image-generation:generateContent?key=$GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "parts": [
        {"text": "Hi, can you create a 3d rendered image of a pig with wings and a top hat flying over a happy futuristic scifi city with lots of greenery?"}
      ]
    }],
    "generationConfig":{"responseModalities":["Text","Image"]}
  }' \
  | grep -o '"data": "[^"]*"' \
  | cut -d'"' -f4 \
  | base64 --decode > gemini-native-image.png
একটি চমত্কার উড়ন্ত শূকরের AI-উত্পন্ন চিত্র
একটি চমত্কার উড়ন্ত শূকরের AI-উত্পন্ন চিত্র

প্রম্পট এবং প্রসঙ্গের উপর নির্ভর করে, মিথুন বিভিন্ন মোডে সামগ্রী তৈরি করবে (টেক্সট টু ইমেজ, টেক্সট টু ইমেজ এবং টেক্সট ইত্যাদি)। এখানে কিছু উদাহরণ আছে:

  • টেক্সট টু ইমেজ
    • উদাহরণ প্রম্পট: "পটভূমিতে আতশবাজি সহ আইফেল টাওয়ারের একটি চিত্র তৈরি করুন।"
  • টেক্সট টু ইমেজ এবং টেক্সট (ইন্টারলিভড)
    • উদাহরণ প্রম্পট: "পায়েলার জন্য একটি চিত্রিত রেসিপি তৈরি করুন।"
  • ছবি(গুলি) এবং টেক্সট টু ইমেজ(গুলি) এবং টেক্সট (ইন্টারলিভড)
    • উদাহরণ প্রম্পট: (একটি সজ্জিত ঘরের একটি চিত্র সহ) "আমার জায়গায় অন্য কোন রঙের সোফা কাজ করবে? আপনি কি ছবিটি আপডেট করতে পারেন?"
  • ছবি সম্পাদনা (টেক্সট এবং ইমেজ থেকে ইমেজ)
    • উদাহরণ প্রম্পট: "একটি কার্টুনের মতো দেখতে এই ছবিটি সম্পাদনা করুন"
    • উদাহরণ প্রম্পট: [একটি বিড়ালের ছবি] + [একটি বালিশের ছবি] + "এই বালিশে আমার বিড়ালের একটি ক্রস সেলাই তৈরি করুন।"
  • মাল্টি-টার্ন ইমেজ এডিটিং (চ্যাট)
    • উদাহরণ প্রম্পট: [একটি নীল গাড়ির একটি ছবি আপলোড করুন।] "এই গাড়িটিকে একটি রূপান্তরযোগ্য করে দিন।" "এখন রং পরিবর্তন করে হলুদ করুন।"

মিথুনের সাথে ইমেজ এডিটিং

ছবি সম্পাদনা করতে, ইনপুট হিসাবে একটি ছবি যোগ করুন। নিম্নলিখিত উদাহরণ বেস64 এনকোড করা ছবি আপলোড করা দেখায়। একাধিক ছবি এবং বড় পেলোডের জন্য, ইমেজ ইনপুট বিভাগটি পরীক্ষা করুন।

from google import genai
from google.genai import types
from PIL import Image
from io import BytesIO

import PIL.Image

image = PIL.Image.open('/path/to/image.png')

client = genai.Client()

text_input = ('Hi, This is a picture of me.'
            'Can you add a llama next to me?',)

response = client.models.generate_content(
    model="gemini-2.0-flash-exp-image-generation",
    contents=[text_input, image],
    config=types.GenerateContentConfig(
      response_modalities=['Text', 'Image']
    )
)

for part in response.candidates[0].content.parts:
  if part.text is not None:
    print(part.text)
  elif part.inline_data is not None:
    image = Image.open(BytesIO(part.inline_data.data))
    image.show()
import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";

async function main() {

  const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });

  // Load the image from the local file system
  const imagePath = "path/to/image.png";
  const imageData = fs.readFileSync(imagePath);
  const base64Image = imageData.toString("base64");

  // Prepare the content parts
  const contents = [
    { text: "Can you add a llama next to the image?" },
    {
      inlineData: {
        mimeType: "image/png",
        data: base64Image,
      },
    },
  ];

  // Set responseModalities to include "Image" so the model can generate an image
  const response = await ai.models.generateContent({
    model: "gemini-2.0-flash-exp-image-generation",
    contents: contents,
    config: {
      responseModalities: ["Text", "Image"],
    },
  });
  for (const part of response.candidates[0].content.parts) {
    // Based on the part type, either show the text or save the image
    if (part.text) {
      console.log(part.text);
    } else if (part.inlineData) {
      const imageData = part.inlineData.data;
      const buffer = Buffer.from(imageData, "base64");
      fs.writeFileSync("gemini-native-image.png", buffer);
      console.log("Image saved as gemini-native-image.png");
    }
  }
}

main();
IMG_PATH=/path/to/your/image1.jpeg

if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  B64FLAGS="--input"
else
  B64FLAGS="-w0"
fi

IMG_BASE64=$(base64 "$B64FLAGS" "$IMG_PATH" 2>&1)

curl -X POST \
  "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp-image-generation:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -d "{
      \"contents\": [{
        \"parts\":[
            {\"text\": \"'Hi, This is a picture of me. Can you add a llama next to me\"},
            {
              \"inline_data\": {
                \"mime_type\":\"image/jpeg\",
                \"data\": \"$IMG_BASE64\"
              }
            }
        ]
      }],
      \"generationConfig\": {\"responseModalities\": [\"Text\", \"Image\"]}
    }"  \
  | grep -o '"data": "[^"]*"' \
  | cut -d'"' -f4 \
  | base64 --decode > gemini-edited-image.png

সীমাবদ্ধতা

  • সেরা পারফরম্যান্সের জন্য, নিম্নলিখিত ভাষাগুলি ব্যবহার করুন: EN, es-MX, ja-JP, zh-CN, hi-IN৷
  • ইমেজ জেনারেশন অডিও বা ভিডিও ইনপুট সমর্থন করে না।
  • ইমেজ জেনারেশন সবসময় ট্রিগার নাও হতে পারে:
    • মডেল শুধুমাত্র টেক্সট আউটপুট হতে পারে. সুস্পষ্টভাবে ইমেজ আউটপুট জিজ্ঞাসা করার চেষ্টা করুন (যেমন "একটি ছবি তৈরি করুন", "ছবি প্রদান করুন যেমন আপনি যান", "চিত্র আপডেট করুন")।
    • মডেলটি আংশিকভাবে তৈরি করা বন্ধ করতে পারে। আবার চেষ্টা করুন বা একটি ভিন্ন প্রম্পট চেষ্টা করুন.
  • একটি চিত্রের জন্য পাঠ্য তৈরি করার সময়, আপনি যদি প্রথমে পাঠ্য তৈরি করেন এবং তারপর পাঠ্য সহ একটি চিত্রের জন্য জিজ্ঞাসা করেন তবে মিথুন সবচেয়ে ভাল কাজ করে।

একটি মডেল চয়ন করুন

ছবি তৈরি করতে আপনার কোন মডেল ব্যবহার করা উচিত? এটি আপনার ব্যবহারের ক্ষেত্রে নির্ভর করে।

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

যদি ছবির গুণমান আপনার শীর্ষ অগ্রাধিকার হয়, তাহলে Imagen 3 একটি ভাল পছন্দ। ইমেজেন 3 ফটোরিয়ালিজম, শৈল্পিক বিশদ এবং ইম্প্রেশনিজম বা অ্যানিমের মতো নির্দিষ্ট শৈল্পিক শৈলীতে পারদর্শী। ইমেজেন 3 পণ্যের ব্যাকগ্রাউন্ড আপডেট করা, ছবি আপস্কেল করা এবং ব্র্যান্ডিং এবং স্টাইলকে ভিজ্যুয়ালে যুক্ত করার মতো বিশেষ চিত্র সম্পাদনা কাজের জন্য একটি ভাল পছন্দ। আপনি লোগো বা অন্যান্য ব্র্যান্ডেড পণ্য ডিজাইন তৈরি করতে Imagen 3 ব্যবহার করতে পারেন।

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

Gemini API, Google-এর সর্বোচ্চ মানের টেক্সট-টু-ইমেজ মডেল, Imagen 3 -তে অ্যাক্সেস প্রদান করে, যেখানে বেশ কিছু নতুন এবং উন্নত ক্ষমতা রয়েছে। চিত্র 3 নিম্নলিখিত কাজ করতে পারে:

  • পূর্ববর্তী মডেলগুলির তুলনায় আরও ভাল বিশদ, সমৃদ্ধ আলো এবং কম বিভ্রান্তিকর শিল্পকর্ম সহ চিত্রগুলি তৈরি করুন
  • স্বাভাবিক ভাষায় লেখা প্রম্পটগুলি বুঝুন
  • বিস্তৃত বিন্যাস এবং শৈলীতে ছবি তৈরি করুন
  • পূর্ববর্তী মডেলের তুলনায় আরো কার্যকরভাবে পাঠ্য রেন্ডার করুন
from google import genai
from google.genai import types
from PIL import Image
from io import BytesIO

client = genai.Client(api_key='GEMINI_API_KEY')

response = client.models.generate_images(
    model='imagen-3.0-generate-002',
    prompt='Robot holding a red skateboard',
    config=types.GenerateImagesConfig(
        number_of_images= 4,
    )
)
for generated_image in response.generated_images:
  image = Image.open(BytesIO(generated_image.image.image_bytes))
  image.show()
import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";

async function main() {

  const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });

  const response = await ai.models.generateImages({
    model: 'imagen-3.0-generate-002',
    prompt: 'Robot holding a red skateboard',
    config: {
      numberOfImages: 4,
    },
  });

  let idx = 1;
  for (const generatedImage of response.generatedImages) {
    let imgBytes = generatedImage.image.imageBytes;
    const buffer = Buffer.from(imgBytes, "base64");
    fs.writeFileSync(`imagen-${idx}.png`, buffer);
    idx++;
  }
}

main();
curl -X POST \
    "https://generativelanguage.googleapis.com/v1beta/models/imagen-3.0-generate-002:predict?key=GEMINI_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
        "instances": [
          {
            "prompt": "Robot holding a red skateboard"
          }
        ],
        "parameters": {
          "sampleCount": 4
        }
      }'
রান্নাঘরে দুটি অস্পষ্ট খরগোশের AI-উত্পন্ন চিত্র
রান্নাঘরে দুটি অস্পষ্ট খরগোশের AI-উত্পন্ন চিত্র

Imagen এই সময়ে শুধুমাত্র ইংরেজি প্রম্পট এবং নিম্নলিখিত প্যারামিটার সমর্থন করে:

ইমেজ মডেল পরামিতি

(প্রোগ্রামিং ভাষা অনুসারে নামকরণের নিয়মগুলি পরিবর্তিত হয়।)

  • numberOfImages : 1 থেকে 4 (অন্তর্ভুক্ত) পর্যন্ত তৈরি করা ছবির সংখ্যা। ডিফল্ট হল 4।
  • aspectRatio : উত্পন্ন চিত্রের অনুপাত পরিবর্তন করে। সমর্থিত মানগুলি হল "1:1" , "3:4" , "4:3" , "9:16" , এবং "16:9" ডিফল্ট হল "1:1"
  • personGeneration : মডেলটিকে মানুষের ছবি তৈরি করার অনুমতি দিন। নিম্নলিখিত মানগুলি সমর্থিত:
    • "DONT_ALLOW" : মানুষের ছবি তৈরি করা ব্লক করুন।
    • "ALLOW_ADULT" : প্রাপ্তবয়স্কদের ছবি তৈরি করুন, কিন্তু শিশুদের নয়৷ এটি ডিফল্ট।

এরপর কি