Gemini ile görüntü üretme

Gemini, görüntüleri etkileşimli olarak oluşturup işleyebilir. Gemini'a metin, resim veya her ikisinin kombinasyonuyla istem girerek resim oluşturma ve düzenleme gibi çeşitli resimle ilgili görevleri gerçekleştirebilirsiniz. Üretilen tüm görsellerde SynthID filigranı bulunur.

Görüntü üretme özelliği tüm bölgelerde ve ülkelerde kullanılamayabilir. Daha fazla bilgi için Gemini modelleri sayfamızı inceleyin.

Imagen'ı ne zaman kullanmalısınız? bölümüne bakın.

Görüntü üretme (metinden görüntüye)

Aşağıdaki kod, açıklayıcı bir isteme dayalı olarak nasıl resim oluşturulacağını gösterir. Yapılandırmanıza responseModalities: ["TEXT", "IMAGE"] ifadesini eklemeniz gerekir. Bu modellerde yalnızca resim içeren çıkış desteklenmez.

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
Fantastik bir uçan domuzun yapay zekayla üretilmiş resmi
Fantastik bir uçan domuzun yapay zekayla üretilmiş görüntüsü

Görüntü düzenleme (metin ve resimden resme)

Resim düzenleme işlemi yapmak için giriş olarak bir resim ekleyin. Aşağıdaki örnekte, Base64 kodlu resimlerin nasıl yüklendiği gösterilmektedir. Birden fazla resim ve daha büyük yükler için image input bölümünü inceleyin.

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

Diğer görüntü üretme modları

Gemini, istem yapısına ve bağlama dayalı olarak diğer resim etkileşimi modlarını da destekler. Örneğin:

  • Metinden resimlere ve metne (araya eklenmiş): İlgili metinleri içeren resimler oluşturur.
    • Örnek istem: "Paella için resimli bir tarif oluştur."
  • Resimler ve metinden resimlere ve metne (dönüşümlü): Yeni ilgili resimler ve metinler oluşturmak için giriş resimlerini ve metinlerini kullanır.
    • Örnek istem: (Döşenmiş bir odanın resmiyle) "Mekanıma hangi renklerde kanepeler yakışır? Resmi güncelleyebilir misin?"
  • Çok turlu görüntü düzenleme (sohbet): Görüntüleri sohbet ederek oluşturmaya / düzenlemeye devam edin.
    • Örnek istemler: [Mavi bir arabanın resmini yükle.] , "Bu arabayı üstü açılır arabaya dönüştür.", "Şimdi rengi sarı olarak değiştirin."

Sınırlamalar

  • En iyi performans için şu dilleri kullanın: EN, es-MX, ja-JP, zh-CN, hi-IN.
  • Görüntü oluşturma, ses veya video girişlerini desteklemez.
  • Görüntü üretme özelliği her zaman tetiklenmeyebilir:
    • Model yalnızca metin çıkışı verebilir. Resim çıkışlarını açıkça istemeyi deneyin (ör. "resim oluştur", "ilerledikçe resim sağla", "resmi güncelle").
    • Model, üretimi yarıda durdurabilir. Tekrar deneyin veya farklı bir istem kullanın.
  • Gemini, bir resim için metin oluştururken önce metni oluşturup ardından metni içeren bir resim istemeniz durumunda en iyi şekilde çalışır.
  • Görüntü üretme özelliğinin kullanılamadığı bazı bölgeler/ülkeler vardır. Daha fazla bilgi için Modeller bölümüne bakın.

Imagen'i ne zaman kullanmalısınız?

Gemini'ın yerleşik görüntü üretme özelliklerini kullanmanın yanı sıra, Gemini API aracılığıyla özel görüntü üretme modelimiz Imagen'e de erişebilirsiniz.

Aşağıdaki durumlarda Gemini'ı seçin:

  • Dünya bilgisi ve akıl yürütme becerilerinden yararlanan, bağlamla alakalı resimlere ihtiyacınız var.
  • Metin ve resimleri sorunsuz bir şekilde harmanlamak önemlidir.
  • Uzun metin dizilerine doğru görseller yerleştirmek istiyorsanız.
  • Bağlamı koruyarak resimleri sohbet eder gibi düzenlemek istiyorsanız.

Imagen'i şu durumlarda seçin:

  • Görüntü kalitesi, fotoğraf gerçekliği, sanatsal ayrıntılar veya belirli stiller (ör. empresyonizm, anime) en önemli önceliklerdir.
  • Ürün arka planı güncellemeleri veya görüntü ölçekleme gibi özel düzenleme görevlerini gerçekleştirme
  • Markalama, stil veya logo ve ürün tasarımları oluşturma

Imagen ile görüntü oluşturmaya başlamak için Imagen 4'ü kullanın. Gelişmiş kullanım alanları için veya en iyi görüntü kalitesine ihtiyaç duyduğunuzda Imagen 4 Ultra'yı seçin. Imagen 4 Ultra'nın tek seferde yalnızca bir görüntü oluşturabileceğini unutmayın.

Sırada ne var?