تولید تصویر با جمینی

Gemini می تواند تصاویر را به صورت مکالمه تولید و پردازش کند. می‌توانید از Gemini متن، تصاویر یا ترکیبی از هر دو را برای دستیابی به کارهای مختلف مرتبط با تصویر، مانند تولید و ویرایش تصویر، درخواست کنید. همه تصاویر تولید شده شامل یک علامت SynthID هستند.

ممکن است تولید تصویر در همه مناطق و کشورها در دسترس نباشد، برای اطلاعات بیشتر صفحه مدل‌های Gemini ما را مرور کنید.

تولید تصویر (متن به تصویر)

کد زیر نحوه تولید یک تصویر بر اساس یک دستور توصیفی را نشان می دهد. شما باید responseModalities : ["TEXT", "IMAGE"] در پیکربندی خود وارد کنید. خروجی فقط تصویر در این مدل ها پشتیبانی نمی شود.

پایتون

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-preview-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, Modality } from "@google/genai";
import * as fs from "node:fs";

async function main() {

  const ai = new GoogleGenAI({});

  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-preview-image-generation",
    contents: contents,
    config: {
      responseModalities: [Modality.TEXT, Modality.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();

برو

package main

import (
  "context"
  "fmt"
  "os"
  "google.golang.org/genai"
)

func main() {

  ctx := context.Background()
  client, err := genai.NewClient(ctx, nil)
  if err != nil {
      log.Fatal(err)
  }

  config := &genai.GenerateContentConfig{
      ResponseModalities: []string{"TEXT", "IMAGE"},
  }

  result, _ := client.Models.GenerateContent(
      ctx,
      "gemini-2.0-flash-preview-image-generation",
      genai.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?"),
      config,
  )

  for _, part := range result.Candidates[0].Content.Parts {
      if part.Text != "" {
          fmt.Println(part.Text)
      } else if part.InlineData != nil {
          imageBytes := part.InlineData.Data
          outputFilename := "gemini_generated_image.png"
          _ = os.WriteFile(outputFilename, imageBytes, 0644)
      }
  }
}

استراحت

curl -s -X POST
  "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-preview-image-generation:generateContent" \
  -H "x-goog-api-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
تصویر ایجاد شده توسط هوش مصنوعی از یک خوک پرنده خارق العاده
تصویر ایجاد شده توسط هوش مصنوعی از یک خوک پرنده خارق العاده

ویرایش تصویر (متن و تصویر به تصویر)

برای انجام ویرایش تصویر، یک تصویر را به عنوان ورودی اضافه کنید. مثال زیر آپلود تصاویر کدگذاری شده base64 را نشان می دهد. برای تصاویر متعدد و بارهای بزرگتر، بخش ورودی تصویر را بررسی کنید.

پایتون

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-preview-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, Modality } from "@google/genai";
import * as fs from "node:fs";

async function main() {

  const ai = new GoogleGenAI({});

  // 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-preview-image-generation",
    contents: contents,
    config: {
      responseModalities: [Modality.TEXT, Modality.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();

برو

package main

import (
 "context"
 "fmt"
 "os"
 "google.golang.org/genai"
)

func main() {

 ctx := context.Background()
 client, err := genai.NewClient(ctx, nil)
 if err != nil {
     log.Fatal(err)
 }

 imagePath := "/path/to/image.png"
 imgData, _ := os.ReadFile(imagePath)

 parts := []*genai.Part{
   genai.NewPartFromText("Hi, This is a picture of me. Can you add a llama next to me?"),
   &genai.Part{
     InlineData: &genai.Blob{
       MIMEType: "image/png",
       Data:     imgData,
     },
   },
 }

 contents := []*genai.Content{
   genai.NewContentFromParts(parts, genai.RoleUser),
 }

 config := &genai.GenerateContentConfig{
     ResponseModalities: []string{"TEXT", "IMAGE"},
 }

 result, _ := client.Models.GenerateContent(
     ctx,
     "gemini-2.0-flash-preview-image-generation",
     contents,
     config,
 )

 for _, part := range result.Candidates[0].Content.Parts {
     if part.Text != "" {
         fmt.Println(part.Text)
     } else if part.InlineData != nil {
         imageBytes := part.InlineData.Data
         outputFilename := "gemini_generated_image.png"
         _ = os.WriteFile(outputFilename, imageBytes, 0644)
     }
 }
}

استراحت

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-preview-image-generation:generateContent" \
    -H "x-goog-api-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

سایر حالت های تولید تصویر

Gemini از سایر حالت های تعامل تصویر بر اساس ساختار و زمینه سریع پشتیبانی می کند، از جمله:

  • متن به تصویر(ها) و متن (میانبر): تصاویر را با متن مرتبط خروجی می دهد.
    • درخواست مثال: "یک دستور العمل مصور برای پائلا ایجاد کنید."
  • تصویر(ها) و متن به تصویر(ها) و نوشتار (میانبر) : از تصاویر ورودی و متن برای ایجاد تصاویر و متن مرتبط جدید استفاده می کند.
    • اعلان مثال: (با تصویر یک اتاق مبله) "مبل های چه رنگ دیگری در فضای من کار می کنند؟ آیا می توانید تصویر را به روز کنید؟"
  • ویرایش تصویر چند نوبتی (چت): به تولید/ویرایش تصاویر به صورت مکالمه ادامه دهید.
    • به عنوان مثال درخواست می کند: [تصویر یک ماشین آبی را آپلود کنید.] , "Turn this car into a convertible.", "Now change the color to yellow."

محدودیت ها

  • برای بهترین عملکرد، از زبان‌های زیر استفاده کنید: EN، es-MX، ja-JP، zh-CN، hi-IN.
  • تولید تصویر از ورودی های صوتی یا تصویری پشتیبانی نمی کند.
  • تولید تصویر ممکن است همیشه فعال نشود:
    • مدل ممکن است فقط متن خروجی داشته باشد. سعی کنید خروجی های تصویر را به طور صریح بخواهید (به عنوان مثال "تصویر ایجاد کنید"، "تصاویر را در حین حرکت ارائه دهید"، "تصویر را به روز کنید").
    • ممکن است تولید مدل به صورت نیمه تمام متوقف شود. دوباره امتحان کنید یا درخواست دیگری را امتحان کنید.
  • هنگام تولید متن برای یک تصویر، Gemini بهترین کار را دارد اگر ابتدا متن را تولید کنید و سپس تصویری را با متن درخواست کنید.
  • برخی از مناطق/کشورها هستند که تولید تصویر در آنها در دسترس نیست. برای اطلاعات بیشتر به مدل ها مراجعه کنید.

زمان استفاده از Imagen

علاوه بر استفاده از قابلیت‌های تولید تصویر داخلی Gemini، می‌توانید از طریق Gemini API به Imagen ، مدل تولید تصویر تخصصی ما نیز دسترسی داشته باشید.

جمینی را زمانی انتخاب کنید که:

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

هنگامی که Imagen را انتخاب کنید:

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

Imagen 4 باید مدل اصلی شما باشد که شروع به تولید تصاویر با Imagen می کند. برای موارد استفاده پیشرفته یا زمانی که به بهترین کیفیت تصویر نیاز دارید، Imagen 4 Ultra را انتخاب کنید. توجه داشته باشید که Imagen 4 Ultra تنها می تواند یک تصویر را در یک زمان تولید کند.

بعدش چی