Gjeneroni imazhe

Gemini API mbështet gjenerimin e imazheve duke përdorur Gemini 2.0 Flash Experimental dhe duke përdorur Imagen 3 . Ky udhëzues ju ndihmon të filloni me të dy modelet.

Gjeneroni imazhe duke përdorur Gemini

Gemini 2.0 Flash Experimental mbështet aftësinë për të nxjerrë tekst dhe imazhe inline. Kjo ju lejon të përdorni Binjakët për të modifikuar në mënyrë bisedore imazhe ose për të gjeneruar rezultate me tekst të ndërthurur (për shembull, duke krijuar një postim në blog me tekst dhe imazhe në një kthesë të vetme). Të gjitha imazhet e krijuara përfshijnë një filigran SynthID dhe imazhet në Google AI Studio përfshijnë gjithashtu një filigran të dukshëm.

Shembulli i mëposhtëm tregon se si të përdorni Gemini 2.0 për të gjeneruar dalje teksti dhe imazhi:

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()
const { GoogleGenerativeAI } = require("@google/generative-ai");
const fs = require("fs");

const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);

async function generateImage() {
  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 model = genAI.getGenerativeModel({
    model: "gemini-2.0-flash-exp-image-generation",
    generationConfig: {
        responseModalities: ['Text', 'Image']
    },
  });

  try {
    const response = await model.generateContent(contents);
    for (const part of  response.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');
      }
    }
  } catch (error) {
    console.error("Error generating content:", error);
  }
}

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

Në varësi të kërkesës dhe kontekstit, Binjakët do të gjenerojnë përmbajtje në mënyra të ndryshme (tekst në imazh, tekst në imazh dhe tekst, etj.). Këtu janë disa shembuj:

  • Teksti në imazh
    • Shembull i kërkesës: "Gjeneroni një imazh të kullës Eifel me fishekzjarre në sfond."
  • Teksti në imazh(et) dhe teksti (i ndërthurur)
    • 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)
    • 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 (tekst dhe imazh në imazh)
    • Shembull i kërkesës: "Ndrysho këtë imazh që të duket si një film vizatimor"
    • Shembull i kërkesës: [imazhi i një mace] + [imazhi i një jastëku] + "Krijo një qepje tërthore të maces sime në këtë jastëk."
  • Redaktimi i imazhit me shumë kthesa (chat)
    • 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ë."

Redaktimi i imazhit me Binjakët

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

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()
const { GoogleGenerativeAI } = require("@google/generative-ai");
const fs = require("fs");

const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);

async function generateImage() {
    // 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: "Hi, This is a picture of me. Can you add a llama next to me?" },
        {
          inlineData: {
            mimeType: 'image/png',
            data: base64Image
          }
        }
      ];

  // Set responseModalities to include "Image" so the model can generate an image
  const model = genAI.getGenerativeModel({
    model: "gemini-2.0-flash-exp-image-generation",
    generationConfig: {
        responseModalities: ['Text', 'Image']
    },
  });

  try {
    const response = await model.generateContent(contents);
    for (const part of  response.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');
      }
    }
  } catch (error) {
    console.error("Error generating content:", error);
  }
}

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

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.

Zgjidhni një model

Cilin model duhet të përdorni për të krijuar imazhe? Kjo varet nga rasti i përdorimit tuaj.

Gemini 2.0 është më i miri për prodhimin e imazheve përkatëse në kontekst, përzierjen e tekstit + imazhet, përfshirjen e njohurive botërore dhe arsyetimin rreth imazheve. Ju mund ta përdorni atë për të krijuar pamje të sakta, përkatëse kontekstuale, të ngulitura në sekuenca të gjata teksti. Ju gjithashtu mund t'i modifikoni imazhet në bisedë, duke përdorur gjuhën natyrore, duke ruajtur kontekstin gjatë gjithë bisedës.

Nëse cilësia e imazhit është prioriteti juaj kryesor, atëherë Imagen 3 është një zgjedhje më e mirë. Imagen 3 shkëlqen në fotorealizëm, detaje artistike dhe stile specifike artistike si impresionizmi ose anime. Imagen 3 është gjithashtu një zgjedhje e mirë për detyra të specializuara të redaktimit të imazheve si përditësimi i sfondeve të produkteve, përmirësimi i imazheve dhe futja e markës dhe stilit në pamjet vizuale. Ju mund të përdorni Imagen 3 për të krijuar logo ose modele të tjera produktesh të markës.

Gjeneroni imazhe duke përdorur Imagen 3

Gemini API ofron akses në Imagen 3 , modeli tekst-në-imazh i cilësisë më të lartë të Google, duke shfaqur një sërë aftësish të reja dhe të përmirësuara. Imazhi 3 mund të bëjë sa më poshtë:

  • Gjeneroni imazhe me detaje më të mira, ndriçim më të pasur dhe më pak objekte shpërqendruese sesa modelet e mëparshme
  • Kuptoni udhëzimet e shkruara në gjuhë natyrore
  • Gjeneroni imazhe në një gamë të gjerë formatesh dhe stilesh
  • Paraqitni tekstin në mënyrë më efektive se modelet e mëparshme
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='Fuzzy bunnies in my kitchen',
    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()
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": "Fuzzy bunnies in my kitchen"
          }
        ],
        "parameters": {
          "sampleCount": 4
        }
      }'
Imazhi i krijuar nga AI i dy lepurushëve të paqartë në kuzhinë
Imazhi i krijuar nga AI i dy lepurushëve të paqartë në kuzhinë

Imagen mbështet kërkesat vetëm në anglisht në këtë moment dhe parametrat e mëposhtëm:

Parametrat e modelit të imazhit

  • number_of_images : Numri i imazheve që do të gjenerohen, nga 1 në 4 (përfshirë). Parazgjedhja është 4.
  • aspect_ratio : Ndryshon raportin e pamjes së imazhit të krijuar. Vlerat e mbështetura janë "1:1" , "3:4" , "4:3" , "9:16" dhe "16:9" . Parazgjedhja është "1:1" .
  • person_generation : Lejo modelin të gjenerojë imazhe të njerëzve. Vlerat e mëposhtme mbështeten:
    • "DONT_ALLOW" : Blloko gjenerimin e imazheve të njerëzve.
    • "ALLOW_ADULT" : Krijo imazhe të të rriturve, por jo të fëmijëve. Ky është standardi.

Çfarë është më pas