Generowanie obrazów za pomocą Gemini (czyli Nano Banana)

Gemini może generować i przetwarzać obrazy w formie rozmowy. Możesz przekazywać Gemini tekst, obrazy lub ich kombinację, co pozwala tworzyć, edytować i ulepszać treści wizualne z niespotykaną dotąd kontrolą:

  • Text-to-Image: generuj wysokiej jakości obrazy na podstawie prostych lub złożonych opisów tekstowych.
  • Obraz + tekst na obraz (edycja): podaj obraz i użyj promptów tekstowych, aby dodawać, usuwać lub modyfikować elementy, zmieniać styl lub dostosowywać korekcję kolorów.
  • Wiele obrazów do obrazu (kompozycja i przenoszenie stylu): użyj wielu obrazów wejściowych, aby skomponować nową scenę lub przenieść styl z jednego obrazu na drugi.
  • Iteracyjne dopracowywanie: prowadź rozmowę, aby stopniowo dopracowywać obraz w kilku turach, wprowadzając drobne zmiany, aż będzie idealny.
  • Renderowanie tekstu w wysokiej jakości: dokładne generowanie obrazów zawierających czytelny i dobrze umieszczony tekst, idealne do logo, diagramów i plakatów.

Wszystkie wygenerowane obrazy zawierają znak wodny SynthID.

Generowanie obrazów (tekst na obraz)

Poniższy kod pokazuje, jak wygenerować obraz na podstawie opisowego prompta.

Python

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

client = genai.Client()

prompt = (
    "Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme"
)

response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents=[prompt],
)

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("generated_image.png")

JavaScript

import { GoogleGenAI, Modality } from "@google/genai";
import * as fs from "node:fs";

async function main() {

  const ai = new GoogleGenAI({});

  const prompt =
    "Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme";

  const response = await ai.models.generateContent({
    model: "gemini-2.5-flash-image-preview",
    contents: prompt,
  });
  for (const part of response.candidates[0].content.parts) {
    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();

Przeczytaj

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

  result, _ := client.Models.GenerateContent(
      ctx,
      "gemini-2.5-flash-image-preview",
      genai.Text("Create a picture of a nano banana dish in a " +
                 " fancy restaurant with a Gemini theme"),
  )

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

REST

curl -s -X POST
  "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image-preview:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "parts": [
        {"text": "Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme"}
      ]
    }]
  }' \
  | grep -o '"data": "[^"]*"' \
  | cut -d'"' -f4 \
  | base64 --decode > gemini-native-image.png
Obraz wygenerowany przez AI przedstawiający danie z nano-bananów
Obraz wygenerowany przez AI przedstawiający danie z nano-bananów w restauracji w stylu Gemini

Edytowanie obrazów (tekst i obraz na obraz)

Przypomnienie: upewnij się, że masz wymagane prawa do wszystkich przesyłanych obrazów. Nie twórz treści, które naruszają prawa innych osób, w tym filmów lub obrazów, które mają na celu oszukiwanie, nękanie lub wyrządzanie krzywdy. Korzystanie z tej usługi generatywnej AI podlega naszym Zasadom dotyczącym niedozwolonych zastosowań.

Poniższy przykład pokazuje przesyłanie obrazów zakodowanych w formacie base64. Więcej informacji o wielu obrazach, większych ładunkach i obsługiwanych typach MIME znajdziesz na stronie Rozumienie obrazów.

Python

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

client = genai.Client()

prompt = (
    "Create a picture of my cat eating a nano-banana in a "
    "fancy restaurant under the Gemini constellation",
)

image = Image.open("/path/to/cat_image.png")

response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents=[prompt, 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("generated_image.png")

JavaScript

import { GoogleGenAI, Modality } from "@google/genai";
import * as fs from "node:fs";

async function main() {

  const ai = new GoogleGenAI({});

  const imagePath = "path/to/cat_image.png";
  const imageData = fs.readFileSync(imagePath);
  const base64Image = imageData.toString("base64");

  const prompt = [
    { text: "Create a picture of my cat eating a nano-banana in a" +
            "fancy restaurant under the Gemini constellation" },
    {
      inlineData: {
        mimeType: "image/png",
        data: base64Image,
      },
    },
  ];

  const response = await ai.models.generateContent({
    model: "gemini-2.5-flash-image-preview",
    contents: prompt,
  });
  for (const part of response.candidates[0].content.parts) {
    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();

Przeczytaj

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/cat_image.png"
 imgData, _ := os.ReadFile(imagePath)

 parts := []*genai.Part{
   genai.NewPartFromText("Create a picture of my cat eating a nano-banana in a fancy restaurant under the Gemini constellation"),
   &genai.Part{
     InlineData: &genai.Blob{
       MIMEType: "image/png",
       Data:     imgData,
     },
   },
 }

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

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

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

REST

IMG_PATH=/path/to/cat_image.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.5-flash-image-preview:generateContent" \
    -H "x-goog-api-key: $GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -d "{
      \"contents\": [{
        \"parts\":[
            {\"text\": \"'Create a picture of my cat eating a nano-banana in a fancy restaurant under the Gemini constellation\"},
            {
              \"inline_data\": {
                \"mime_type\":\"image/jpeg\",
                \"data\": \"$IMG_BASE64\"
              }
            }
        ]
      }]
    }"  \
  | grep -o '"data": "[^"]*"' \
  | cut -d'"' -f4 \
  | base64 --decode > gemini-edited-image.png
Obraz wygenerowany przez AI przedstawiający kota jedzącego banana
Obraz wygenerowany przez AI przedstawiający kota jedzącego nano banana

Inne tryby generowania obrazów

Gemini obsługuje inne tryby interakcji z obrazami w zależności od struktury promptu i kontekstu, w tym:

  • Tekst na obraz(y) i tekst (przeplatany): generuje obrazy z powiązanym tekstem.
    • Przykładowy prompt: „Wygeneruj ilustrowany przepis na paellę”.
  • Obrazy i tekst na obrazy i tekst (przeplatane): wykorzystuje obrazy i tekst wejściowy do tworzenia nowych powiązanych obrazów i tekstu.
    • Przykładowy prompt: (z obrazem umeblowanego pokoju) „Jakie inne kolory sof pasowałyby do tego pomieszczenia? Czy możesz zaktualizować obraz?”.
  • Wieloetapowe edytowanie obrazów (czat): generuj i edytuj obrazy w formie rozmowy.
    • Przykładowe prompty: [prześlij zdjęcie niebieskiego samochodu]. „Przekształć ten samochód w kabriolet”. „Teraz zmień kolor na żółty”.

Przewodnik po promptach i strategie

Opanowanie generowania obrazów za pomocą Gemini 2.5 Flash zaczyna się od jednej podstawowej zasady:

Opisz scenę, nie podawaj tylko słów kluczowych. Główną zaletą modelu jest dogłębne rozumienie języka. Opisowy akapit będzie prawie zawsze generować lepszy i bardziej spójny obraz niż lista niepowiązanych ze sobą słów.

Prompty do generowania obrazów

Poniższe strategie pomogą Ci tworzyć skuteczne prompty, aby generować dokładnie takie obrazy, jakich szukasz.

1. Fotorealistyczne sceny

W przypadku realistycznych obrazów używaj terminów fotograficznych. Wspomnij o kątach kamery, typach obiektywów, oświetleniu i drobnych szczegółach, aby skierować model w stronę fotorealistycznego wyniku.

Szablon

A photorealistic [shot type] of [subject], [action or expression], set in
[environment]. The scene is illuminated by [lighting description], creating
a [mood] atmosphere. Captured with a [camera/lens details], emphasizing
[key textures and details]. The image should be in a [aspect ratio] format.

Prompt

A photorealistic close-up portrait of an elderly Japanese ceramicist with
deep, sun-etched wrinkles and a warm, knowing smile. He is carefully
inspecting a freshly glazed tea bowl. The setting is his rustic,
sun-drenched workshop. The scene is illuminated by soft, golden hour light
streaming through a window, highlighting the fine texture of the clay.
Captured with an 85mm portrait lens, resulting in a soft, blurred background
(bokeh). The overall mood is serene and masterful. Vertical portrait
orientation.

Python

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

client = genai.Client()

# Generate an image from a text prompt
response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents="A photorealistic close-up portrait of an elderly Japanese ceramicist with deep, sun-etched wrinkles and a warm, knowing smile. He is carefully inspecting a freshly glazed tea bowl. The setting is his rustic, sun-drenched workshop with pottery wheels and shelves of clay pots in the background. The scene is illuminated by soft, golden hour light streaming through a window, highlighting the fine texture of the clay and the fabric of his apron. Captured with an 85mm portrait lens, resulting in a soft, blurred background (bokeh). The overall mood is serene and masterful.",
)

image_parts = [
    part.inline_data.data
    for part in response.candidates[0].content.parts
    if part.inline_data
]

if image_parts:
    image = Image.open(BytesIO(image_parts[0]))
    image.save('photorealistic_example.png')
    image.show()
Fotorealistyczny portret z bliska starszego japońskiego ceramika...
Fotorealistyczny portret starszego japońskiego ceramika w zbliżeniu…

2. Stylizowane ilustracje i naklejki

Aby utworzyć naklejki, ikony lub komponenty, podaj konkretny styl i poproś o przezroczyste tło.

Szablon

A [style] sticker of a [subject], featuring [key characteristics] and a
[color palette]. The design should have [line style] and [shading style].
The background must be transparent.

Prompt

A kawaii-style sticker of a happy red panda wearing a tiny bamboo hat. It's
munching on a green bamboo leaf. The design features bold, clean outlines,
simple cel-shading, and a vibrant color palette. The background must be white.

Python

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

client = genai.Client()

# Generate an image from a text prompt
response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents="A kawaii-style sticker of a happy red panda wearing a tiny bamboo hat. It's munching on a green bamboo leaf. The design features bold, clean outlines, simple cel-shading, and a vibrant color palette. The background must be white.",
)

image_parts = [
    part.inline_data.data
    for part in response.candidates[0].content.parts
    if part.inline_data
]

if image_parts:
    image = Image.open(BytesIO(image_parts[0]))
    image.save('red_panda_sticker.png')
    image.show()
Naklejka w stylu kawaii przedstawiająca wesołą czerwoną…
Naklejka w stylu kawaii przedstawiająca szczęśliwą pandkę rudą...

3. Dokładny tekst na obrazach

Gemini doskonale radzi sobie z renderowaniem tekstu. Opisz dokładnie tekst, styl czcionki i ogólny projekt.

Szablon

Create a [image type] for [brand/concept] with the text "[text to render]"
in a [font style]. The design should be [style description], with a
[color scheme].

Prompt

Create a modern, minimalist logo for a coffee shop called 'The Daily Grind'.
The text should be in a clean, bold, sans-serif font. The design should
feature a simple, stylized icon of a a coffee bean seamlessly integrated
with the text. The color scheme is black and white.

Python

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

client = genai.Client()

# Generate an image from a text prompt
response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents="Create a modern, minimalist logo for a coffee shop called 'The Daily Grind'. The text should be in a clean, bold, sans-serif font. The design should feature a simple, stylized icon of a a coffee bean seamlessly integrated with the text. The color scheme is black and white.",
)

image_parts = [
    part.inline_data.data
    for part in response.candidates[0].content.parts
    if part.inline_data
]

if image_parts:
    image = Image.open(BytesIO(image_parts[0]))
    image.save('logo_example.png')
    image.show()
Utwórz nowoczesne, minimalistyczne logo kawiarni „The Daily Grind”...
Utwórz nowoczesne, minimalistyczne logo kawiarni o nazwie „The Daily Grind”...

4. Makiety produktów i fotografia komercyjna

Idealne do tworzenia czystych, profesjonalnych zdjęć produktów na potrzeby e-commerce, reklam lub brandingu.

Szablon

A high-resolution, studio-lit product photograph of a [product description]
on a [background surface/description]. The lighting is a [lighting setup,
e.g., three-point softbox setup] to [lighting purpose]. The camera angle is
a [angle type] to showcase [specific feature]. Ultra-realistic, with sharp
focus on [key detail]. [Aspect ratio].

Prompt

A high-resolution, studio-lit product photograph of a minimalist ceramic
coffee mug in matte black, presented on a polished concrete surface. The
lighting is a three-point softbox setup designed to create soft, diffused
highlights and eliminate harsh shadows. The camera angle is a slightly
elevated 45-degree shot to showcase its clean lines. Ultra-realistic, with
sharp focus on the steam rising from the coffee. Square image.

Python

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

client = genai.Client()

# Generate an image from a text prompt
response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents="A high-resolution, studio-lit product photograph of a minimalist ceramic coffee mug in matte black, presented on a polished concrete surface. The lighting is a three-point softbox setup designed to create soft, diffused highlights and eliminate harsh shadows. The camera angle is a slightly elevated 45-degree shot to showcase its clean lines. Ultra-realistic, with sharp focus on the steam rising from the coffee. Square image.",
)

image_parts = [
    part.inline_data.data
    for part in response.candidates[0].content.parts
    if part.inline_data
]

if image_parts:
    image = Image.open(BytesIO(image_parts[0]))
    image.save('product_mockup.png')
    image.show()
Zdjęcie produktu w wysokiej rozdzielczości wykonane w studiu przedstawiające minimalistyczny ceramiczny kubek do kawy…
Zdjęcie produktu w wysokiej rozdzielczości, wykonane w studiu, przedstawiające minimalistyczny ceramiczny kubek do kawy...

5. Minimalistyczny styl i negatywna przestrzeń

Doskonale nadaje się do tworzenia tła stron internetowych, prezentacji lub materiałów marketingowych, na których będzie wyświetlany tekst.

Szablon

A minimalist composition featuring a single [subject] positioned in the
[bottom-right/top-left/etc.] of the frame. The background is a vast, empty
[color] canvas, creating significant negative space. Soft, subtle lighting.
[Aspect ratio].

Prompt

A minimalist composition featuring a single, delicate red maple leaf
positioned in the bottom-right of the frame. The background is a vast, empty
off-white canvas, creating significant negative space for text. Soft,
diffused lighting from the top left. Square image.

Python

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

client = genai.Client()

# Generate an image from a text prompt
response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents="A minimalist composition featuring a single, delicate red maple leaf positioned in the bottom-right of the frame. The background is a vast, empty off-white canvas, creating significant negative space for text. Soft, diffused lighting from the top left. Square image.",
)

image_parts = [
    part.inline_data.data
    for part in response.candidates[0].content.parts
    if part.inline_data
]

if image_parts:
    image = Image.open(BytesIO(image_parts[0]))
    image.save('minimalist_design.png')
    image.show()
Minimalistyczna kompozycja przedstawiająca pojedynczy, delikatny liść klonu czerwonego...
Minimalistyczna kompozycja przedstawiająca pojedynczy, delikatny czerwony liść klonu...

6. Sztuka sekwencyjna (panel komiksu / scenorys)

Opiera się na spójności postaci i opisie sceny, aby tworzyć panele do opowiadania historii za pomocą obrazów.

Szablon

A single comic book panel in a [art style] style. In the foreground,
[character description and action]. In the background, [setting details].
The panel has a [dialogue/caption box] with the text "[Text]". The lighting
creates a [mood] mood. [Aspect ratio].

Prompt

A single comic book panel in a gritty, noir art style with high-contrast
black and white inks. In the foreground, a detective in a trench coat stands
under a flickering streetlamp, rain soaking his shoulders. In the
background, the neon sign of a desolate bar reflects in a puddle. A caption
box at the top reads "The city was a tough place to keep secrets." The
lighting is harsh, creating a dramatic, somber mood. Landscape.

Python

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

client = genai.Client()

# Generate an image from a text prompt
response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents="A single comic book panel in a gritty, noir art style with high-contrast black and white inks. In the foreground, a detective in a trench coat stands under a flickering streetlamp, rain soaking his shoulders. In the background, the neon sign of a desolate bar reflects in a puddle. A caption box at the top reads \"The city was a tough place to keep secrets.\" The lighting is harsh, creating a dramatic, somber mood. Landscape.",
)

image_parts = [
    part.inline_data.data
    for part in response.candidates[0].content.parts
    if part.inline_data
]

if image_parts:
    image = Image.open(BytesIO(image_parts[0]))
    image.save('comic_panel.png')
    image.show()
Pojedynczy panel komiksu w mrocznym, noir art style...
Pojedynczy panel komiksu w mrocznym stylu noir...

Prompty do edytowania obrazów

Te przykłady pokazują, jak przesyłać obrazy wraz z promptami tekstowymi w celu edycji, kompozycji i przenoszenia stylu.

1. Dodawanie i usuwanie elementów

Prześlij obraz i opisz zmianę. Model będzie pasować do stylu, oświetlenia i perspektywy oryginalnego obrazu.

Szablon

Using the provided image of [subject], please [add/remove/modify] [element]
to/from the scene. Ensure the change is [description of how the change should
integrate].

Prompt

"Using the provided image of my cat, please add a small, knitted wizard hat
on its head. Make it look like it's sitting comfortably and matches the soft
lighting of the photo."

Python

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

client = genai.Client()

# Base image prompt: "A photorealistic picture of a fluffy ginger cat sitting on a wooden floor, looking directly at the camera. Soft, natural light from a window."
image_input = Image.open('/path/to/your/cat_photo.png')
text_input = """Using the provided image of my cat, please add a small, knitted wizard hat on its head. Make it look like it's sitting comfortably and not falling off."""

# Generate an image from a text prompt
response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents=[text_input, image_input],
)

image_parts = [
    part.inline_data.data
    for part in response.candidates[0].content.parts
    if part.inline_data
]

if image_parts:
    image = Image.open(BytesIO(image_parts[0]))
    image.save('cat_with_hat.png')
    image.show()

Dane wejściowe

Wyjście

Fotorealistyczne zdjęcie puszystego rudego kota.
Fotorealistyczne zdjęcie puszystego rudego kota...
Na podstawie przesłanego zdjęcia mojego kota dodaj mały, dziergany kapelusz czarodzieja...
Na podstawie przesłanego zdjęcia mojego kota dodaj mały, dziergany kapelusz czarodzieja...

2. Retusz (maskowanie semantyczne)

Określ „maskę” w formie rozmowy, aby edytować konkretną część obrazu, nie zmieniając reszty.

Szablon

Using the provided image, change only the [specific element] to [new
element/description]. Keep everything else in the image exactly the same,
preserving the original style, lighting, and composition.

Prompt

"Using the provided image of a living room, change only the blue sofa to be
a vintage, brown leather chesterfield sofa. Keep the rest of the room,
including the pillows on the sofa and the lighting, unchanged."

Python

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

client = genai.Client()

# Base image prompt: "A wide shot of a modern, well-lit living room with a prominent blue sofa in the center. A coffee table is in front of it and a large window is in the background."
living_room_image = Image.open('/path/to/your/living_room.png')
text_input = """Using the provided image of a living room, change only the blue sofa to be a vintage, brown leather chesterfield sofa. Keep the rest of the room, including the pillows on the sofa and the lighting, unchanged."""

# Generate an image from a text prompt
response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents=[living_room_image, text_input],
)

image_parts = [
    part.inline_data.data
    for part in response.candidates[0].content.parts
    if part.inline_data
]

if image_parts:
    image = Image.open(BytesIO(image_parts[0]))
    image.save('living_room_edited.png')
    image.show()

Dane wejściowe

Wyjście

Szerokie ujęcie nowoczesnego, dobrze oświetlonego salonu...
Szerokie ujęcie nowoczesnego, dobrze oświetlonego salonu…
Na podstawie podanego zdjęcia salonu zmień tylko niebieską sofę na brązową skórzaną sofę Chesterfield w stylu vintage...
Na podstawie podanego zdjęcia salonu zmień tylko niebieską sofę na brązową skórzaną sofę typu chesterfield w stylu vintage...

3. Przenoszenie stylu

Prześlij obraz i poproś model o odtworzenie jego treści w innym stylu artystycznym.

Szablon

Transform the provided photograph of [subject] into the artistic style of [artist/art style]. Preserve the original composition but render it with [description of stylistic elements].

Prompt

"Transform the provided photograph of a modern city street at night into the artistic style of Vincent van Gogh's 'Starry Night'. Preserve the original composition of buildings and cars, but render all elements with swirling, impasto brushstrokes and a dramatic palette of deep blues and bright yellows."

Python

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

client = genai.Client()

# Base image prompt: "A photorealistic, high-resolution photograph of a busy city street in New York at night, with bright neon signs, yellow taxis, and tall skyscrapers."
city_image = Image.open('/path/to/your/city.png')
text_input = """Transform the provided photograph of a modern city street at night into the artistic style of Vincent van Gogh's 'Starry Night'. Preserve the original composition of buildings and cars, but render all elements with swirling, impasto brushstrokes and a dramatic palette of deep blues and bright yellows."""

# Generate an image from a text prompt
response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents=[city_image, text_input],
)

image_parts = [
    part.inline_data.data
    for part in response.candidates[0].content.parts
    if part.inline_data
]

if image_parts:
    image = Image.open(BytesIO(image_parts[0]))
    image.save('city_style_transfer.png')
    image.show()

Dane wejściowe

Wyjście

Fotorealistyczne zdjęcie w wysokiej rozdzielczości przedstawiające ruchliwą ulicę w mieście...
Fotorealistyczne zdjęcie w wysokiej rozdzielczości przedstawiające ruchliwą ulicę w mieście...
Przekształć podane zdjęcie nowoczesnej ulicy w mieście w nocy...
Przekształć podane zdjęcie nowoczesnej ulicy w mieście w nocy...

4. Zaawansowana kompozycja: łączenie wielu obrazów

Podaj kilka obrazów jako kontekst, aby utworzyć nową, złożoną scenę. To idealne rozwiązanie do tworzenia makiet produktów lub kreatywnych kolaży.

Szablon

Create a new image by combining the elements from the provided images. Take
the [element from image 1] and place it with/on the [element from image 2].
The final image should be a [description of the final scene].

Prompt

"Create a professional e-commerce fashion photo. Take the blue floral dress
from the first image and let the woman from the second image wear it.
Generate a realistic, full-body shot of the woman wearing the dress, with
the lighting and shadows adjusted to match the outdoor environment."

Python

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

client = genai.Client()

# Base image prompts:
# 1. Dress: "A professionally shot photo of a blue floral summer dress on a plain white background, ghost mannequin style."
# 2. Model: "Full-body shot of a woman with her hair in a bun, smiling, standing against a neutral grey studio background."
dress_image = Image.open('/path/to/your/dress.png')
model_image = Image.open('/path/to/your/model.png')

text_input = """Create a professional e-commerce fashion photo. Take the blue floral dress from the first image and let the woman from the second image wear it. Generate a realistic, full-body shot of the woman wearing the dress, with the lighting and shadows adjusted to match the outdoor environment."""

# Generate an image from a text prompt
response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents=[dress_image, model_image, text_input],
)

image_parts = [
    part.inline_data.data
    for part in response.candidates[0].content.parts
    if part.inline_data
]

if image_parts:
    image = Image.open(BytesIO(image_parts[0]))
    image.save('fashion_ecommerce_shot.png')
    image.show()

Dane wejściowe 1

Dane wejściowe 2

Wyjście

Profesjonalne zdjęcie niebieskiej letniej sukienki w kwiaty...
Profesjonalnie wykonane zdjęcie niebieskiej letniej sukienki w kwiaty…
Zdjęcie całej sylwetki kobiety z włosami upiętymi w kok…
Zdjęcie całej sylwetki kobiety z włosami spiętymi w kok…
Tworzenie profesjonalnego zdjęcia mody do e-commerce…
Utwórz profesjonalne zdjęcie mody do e-commerce...

5. Zachowanie szczegółów w wysokiej jakości

Aby mieć pewność, że podczas edycji zostaną zachowane ważne szczegóły (np. twarz lub logo), dokładnie je opisz wraz z prośbą o edycję.

Szablon

Using the provided images, place [element from image 2] onto [element from
image 1]. Ensure that the features of [element from image 1] remain
completely unchanged. The added element should [description of how the
element should integrate].

Prompt

"Take the first image of the woman with brown hair, blue eyes, and a neutral
expression. Add the logo from the second image onto her black t-shirt.
Ensure the woman's face and features remain completely unchanged. The logo
should look like it's naturally printed on the fabric, following the folds
of the shirt."

Python

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

client = genai.Client()

# Base image prompts:
# 1. Woman: "A professional headshot of a woman with brown hair and blue eyes, wearing a plain black t-shirt, against a neutral studio background."
# 2. Logo: "A simple, modern logo with the letters 'G' and 'A' in a white circle."
woman_image = Image.open('/path/to/your/woman.png')
logo_image = Image.open('/path/to/your/logo.png')
text_input = """Take the first image of the woman with brown hair, blue eyes, and a neutral expression. Add the logo from the second image onto her black t-shirt. Ensure the woman's face and features remain completely unchanged. The logo should look like it's naturally printed on the fabric, following the folds of the shirt."""

# Generate an image from a text prompt
response = client.models.generate_content(
    model="gemini-2.5-flash-image-preview",
    contents=[woman_image, logo_image, text_input],
)

image_parts = [
    part.inline_data.data
    for part in response.candidates[0].content.parts
    if part.inline_data
]

if image_parts:
    image = Image.open(BytesIO(image_parts[0]))
    image.save('woman_with_logo.png')
    image.show()

Dane wejściowe 1

Dane wejściowe 2

Wyjście

Profesjonalne zdjęcie portretowe kobiety z brązowymi włosami i niebieskimi oczami…
Profesjonalne zdjęcie portretowe kobiety z brązowymi włosami i niebieskimi oczami…
Proste, nowoczesne logo z literami „G” i „A”...
Proste, nowoczesne logo z literami „G” i „A”...
Weź pierwsze zdjęcie kobiety z brązowymi włosami, niebieskimi oczami i neutralnym wyrazem twarzy…
Zrób pierwsze zdjęcie kobiety z brązowymi włosami, niebieskimi oczami i neutralnym wyrazem twarzy...

Sprawdzone metody

Aby poprawić wyniki z dobrych na świetne, włącz do swojego przepływu pracy te profesjonalne strategie.

  • Podawaj bardzo szczegółowe informacje: im więcej szczegółów podasz, tym większą będziesz mieć kontrolę. Zamiast „zbroja fantasy” opisz ją: „bogato zdobiona elfia zbroja płytowa, wyryte wzory srebrnych liści, wysoki kołnierz i naramienniki w kształcie skrzydeł sokoła”.
  • Podaj kontekst i cel: wyjaśnij cel obrazu. Zrozumienie kontekstu przez model wpłynie na ostateczne dane wyjściowe. Na przykład „Utwórz logo dla ekskluzywnej, minimalistycznej marki kosmetyków do pielęgnacji skóry” da lepsze wyniki niż samo „Utwórz logo”.
  • Iteruj i dopracowuj: nie oczekuj idealnego obrazu za pierwszym razem. Wykorzystaj konwersacyjny charakter modelu, aby wprowadzać drobne zmiany. Możesz kontynuować, używając promptów takich jak „Świetnie, ale czy możesz sprawić, żeby oświetlenie było nieco cieplejsze?” lub „Pozostaw wszystko bez zmian, ale zmień wyraz twarzy postaci na bardziej poważny”.
  • Używaj instrukcji krok po kroku: w przypadku złożonych scen z wieloma elementami podziel prompt na kroki. „Najpierw utwórz tło przedstawiające spokojny, zamglony las o świcie. Następnie na pierwszym planie dodaj pokryty mchem starożytny kamienny ołtarz. Na koniec połóż na ołtarzu jeden świecący miecz”.
  • Używaj „semantycznych negatywnych promptów”: zamiast pisać „bez samochodów”, opisz pożądaną scenę w sposób pozytywny: „pusta, opuszczona ulica bez śladów ruchu”.
  • Sterowanie aparatem: używaj języka fotograficznego i filmowego, aby sterować kompozycją. Określenia takie jak wide-angle shot, macro shot, low-angle perspective.

Ograniczenia

  • Aby uzyskać najlepsze wyniki, używaj tych języków: EN, es-MX, ja-JP, zh-CN, hi-IN.
  • Generowanie obrazów nie obsługuje danych wejściowych audio ani wideo.
  • Model nie zawsze będzie generować dokładnie taką liczbę obrazów, o jaką użytkownik wyraźnie poprosił.
  • Model działa najlepiej, gdy jako dane wejściowe podasz maksymalnie 3 obrazy.
  • Podczas generowania tekstu do obrazu Gemini działa najlepiej, jeśli najpierw wygenerujesz tekst, a potem poprosisz o obraz z tym tekstem.
  • Przesyłanie zdjęć dzieci nie jest obecnie obsługiwane w Europejskim Obszarze Gospodarczym, Szwajcarii ani Wielkiej Brytanii.
  • Wszystkie wygenerowane obrazy zawierają znak wodny SynthID.

Kiedy używać Imagen

Oprócz korzystania z wbudowanych funkcji generowania obrazów w Gemini możesz też uzyskać dostęp do Imagen, naszego specjalistycznego modelu generowania obrazów, za pomocą interfejsu Gemini API.

Atrybut Imagen Obraz natywny Gemini
Mocne strony Najbardziej zaawansowany model do generowania obrazów. Zalecane w przypadku fotorealistycznych obrazów, większej wyrazistości, lepszej pisowni i typografii. Domyślna rekomendacja
: niezrównana elastyczność, zrozumienie kontekstu oraz prosta edycja bez maskowania. Unikalna możliwość edycji konwersacyjnej w wielu turach.
Dostępność Ogólnie dostępne Wersja przedpremierowa (dozwolone użycie w wersji produkcyjnej)
Czas oczekiwania Niska Zoptymalizowany pod kątem wydajności w czasie zbliżonym do rzeczywistego. Większą Do korzystania z zaawansowanych funkcji potrzeba większej mocy obliczeniowej.
Koszt Opłacalny w przypadku specjalistycznych zadań. 0,02–0,12 USD za obraz Ceny oparte na tokenach. 30 USD za 1 mln tokenów w przypadku wyjściowych tokenów obrazów (wyjściowe tokeny obrazów są tokenizowane w stałej liczbie 1290 tokenów na obraz, maksymalnie 1024 x 1024 piksele)
Zalecane zadania
  • Najważniejsza jest jakość obrazu, fotorealizm, szczegóły artystyczne lub określone style (np. impresjonizm, anime).
  • wzbogacanie treści o elementy marki i stylu lub generowanie logo i projektów produktów;
  • generowanie zaawansowanej pisowni lub typografii;
  • Generowanie przeplatanego tekstu i obrazów, aby płynnie łączyć tekst z obrazami.
  • Łączenie elementów kreacji z wielu obrazów za pomocą jednego prompta.
  • wprowadzać bardzo szczegółowe zmiany w obrazach, modyfikować poszczególne elementy za pomocą prostych poleceń językowych i iteracyjnie pracować nad obrazem;
  • Zastosuj konkretny projekt lub teksturę z jednego obrazu do drugiego, zachowując kształt i szczegóły oryginalnego obiektu.

Imagen 4 to model, którego warto używać do generowania obrazów za pomocą Imagen. Wybierz Imagen 4 Ultra do zaawansowanych zastosowań lub gdy potrzebujesz najlepszej jakości obrazu (pamiętaj, że możesz generować tylko 1 obraz naraz).

Co dalej?

  • Więcej przykładów i fragmentów kodu znajdziesz w przewodniku.
  • Zapoznaj się z przewodnikiem po Veo, aby dowiedzieć się, jak generować filmy za pomocą interfejsu Gemini API.
  • Więcej informacji o modelach Gemini znajdziesz w artykule Modele Gemini.