Gjenerimi i imazheve me Binjakët

Binjakët mund të gjenerojnë dhe përpunojnë imazhe në bisedë. Ju mund t'i nxisni Binjakët me tekst, imazhe ose një kombinim të të dyjave për të arritur detyra të ndryshme që lidhen me imazhin, si gjenerimi dhe redaktimi i imazheve. Të gjitha imazhet e krijuara përfshijnë një filigran SynthID .

Gjenerimi i imazheve mund të mos jetë i disponueshëm në të gjitha rajonet dhe vendet, rishikoni faqen tonë të modeleve të Gemini për më shumë informacion.

Gjenerimi i imazhit (tekst në imazh)

Kodi i mëposhtëm tregon se si të gjeneroni një imazh bazuar në një kërkesë përshkruese. Ju duhet të përfshini responseModalities : ["TEXT", "IMAGE"] në konfigurimin tuaj. Dalja vetëm me imazhe nuk mbështetet me këto modele.

Python

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

JavaScript

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

Shkoni

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)
      }
  }
}

PUSHIMI

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
Imazhi i krijuar nga AI i një derri fantastik fluturues
Imazhi i krijuar nga AI i një derri fantastik fluturues

Redaktimi i imazhit (tekst-dhe-imazh në imazh)

Për të kryer redaktimin e imazhit, shtoni një imazh si hyrje. Shembulli i mëposhtëm tregon ngarkimin e imazheve të koduara base64. Për imazhe të shumta dhe ngarkesa më të mëdha, kontrolloni seksionin e futjes së imazhit .

Python

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

JavaScript

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

Shkoni

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)
     }
 }
}

PUSHIMI

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

Mënyra të tjera të gjenerimit të imazhit

Binjakët mbështet mënyra të tjera të ndërveprimit të imazhit bazuar në strukturën dhe kontekstin e shpejtë, duke përfshirë:

  • Teksti në imazh(et) dhe teksti (i ndërthurur): Nxjerr imazhe me tekst përkatës.
    • Shembull i kërkesës: "Krijoni një recetë të ilustruar për një paella."
  • Imazhi(et) dhe teksti në imazh(et) dhe teksti (i ndërthurur) : Përdor imazhe hyrëse dhe tekst për të krijuar imazhe dhe tekst të ri të lidhur.
    • Shembull i kërkesës: (Me një imazh të një dhome të mobiluar) "Cila divane me ngjyra të tjera do të funksiononin në hapësirën time? a mund ta përditësoni imazhin?"
  • Redaktimi i imazhit me shumë kthesa (chat): Vazhdoni të krijoni / redaktoni imazhe në bisedë.
    • Shembull kërkon: [ngarkoni një imazh të një makine blu.] , "Kthejeni këtë makinë në një makinë të konvertueshme.", "Tani ndryshoni ngjyrën në të verdhë."

Kufizimet

  • Për performancën më të mirë, përdorni gjuhët e mëposhtme: EN, es-MX, ja-JP, zh-CN, hi-IN.
  • Gjenerimi i imazhit nuk mbështet hyrjet audio ose video.
  • Gjenerimi i imazhit mund të mos shkaktojë gjithmonë:
    • Modeli mund të nxjerrë vetëm tekst. Provoni të kërkoni në mënyrë eksplicite rezultatet e imazhit (p.sh. "gjeneroni një imazh", "siguroni imazhe ndërsa vazhdoni", "përditësoni imazhin").
    • Modeli mund të ndalojë së prodhuari pjesërisht. Provo sërish ose provo një kërkesë tjetër.
  • Kur krijoni tekst për një imazh, Binjakët funksionojnë më mirë nëse së pari krijoni tekstin dhe më pas kërkoni një imazh me tekstin.
  • Ka disa rajone/shtete ku gjenerimi i imazheve nuk është i disponueshëm. Shikoni Modelet për më shumë informacion.

Kur të përdorni Imagen

Përveç përdorimit të aftësive të integruara të gjenerimit të imazheve të Gemini, ju mund të përdorni gjithashtu Imagen , modelin tonë të specializuar të gjenerimit të imazheve, përmes Gemini API.

Zgjidhni Binjakët kur:

  • Ju nevojiten imazhe të rëndësishme kontekstuale që shfrytëzojnë njohuritë dhe arsyetimin botëror.
  • Përzierja pa probleme e tekstit dhe imazheve është e rëndësishme.
  • Ju dëshironi pamje të sakta vizuale të ngulitura brenda sekuencave të gjata të tekstit.
  • Ju dëshironi të redaktoni imazhet në bisedë duke ruajtur kontekstin.

Zgjidhni Imagen kur:

  • Cilësia e imazhit, fotorealizmi, detajet artistike ose stilet specifike (p.sh., impresionizmi, anime) janë prioritetet kryesore.
  • Kryerja e detyrave të specializuara të redaktimit si përditësimet e sfondit të produktit ose përmirësimi i imazhit.
  • Përfshirja e markës, stilit ose gjenerimi i logove dhe modeleve të produkteve.

Imagen 4 duhet të jetë modeli juaj i preferuar që fillon të gjenerojë imazhe me Imagen. Zgjidhni Imagen 4 Ultra për përdorime të avancuara ose kur keni nevojë për cilësinë më të mirë të imazhit. Vini re se Imagen 4 Ultra mund të gjenerojë vetëm një imazh në të njëjtën kohë.

Çfarë është më pas