3.0 KiB
3.0 KiB
Media Generation
Image Generation
Generate images using gemini-2.5-flash-image.
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-2.5-flash-image",
contents="A dog reading a newspaper",
)
for part in response.parts:
if part.text is not None:
print(part.text)
elif part.inline_data is not None:
image = part.as_image()
image.save("generated_image.png")
For high-resolution images or using the Search tool, use gemini-3-pro-image-preview.
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-3-pro-image-preview",
contents="A dog reading a newspaper",
config=types.GenerateContentConfig(
image_config=types.ImageConfig(
aspect_ratio="16:9",
image_size="2K"
)
)
)
for part in response.parts:
if part.text is not None:
print(part.text)
elif part.inline_data is not None:
image = part.as_image()
image.save("generated_image.png")
Image Editing
Editing images is better done using the Gemini native image generation model, and it is recommended to use chat mode.
from google import genai
from PIL import Image
client = genai.Client()
prompt = "A small white ceramic bowl with lemons and limes"
image = Image.open('fruit.png')
# Create the chat
chat = client.chats.create(model='gemini-2.5-flash-image')
# Send the image and ask for it to be edited
response = chat.send_message([prompt, image])
# Get the text and the image generated
for i, part in enumerate(response.candidates[0].content.parts):
if part.text is not None:
print(part.text)
elif part.inline_data is not None:
image = part.as_image()
image.save(f'generated_image_{i}.png')
# Continue iterating
chat.send_message('Make the bowl blue')
Video Generation
Generate video using the Veo model. Usage of Veo can be costly, so check pricing for Veo. Start with the fast model (veo-3.1-fast-generate-001) since the result quality is usually sufficient, and swap to the larger model if needed.
import time
from google import genai
from google.genai import types
from PIL import Image
client = genai.Client()
image = Image.open('image.png') # Optional initial image
# Video generation is an async operation
operation = client.models.generate_videos(
model="veo-3.1-fast-generate-001",
prompt="a cat reading a book",
image=image,
config=types.GenerateVideosConfig(
person_generation="dont_allow",
aspect_ratio="16:9",
number_of_videos=1,
duration_seconds=5,
output_gcs_uri="gs://your-bucket/your-prefix",
),
)
# Poll for completion
while not operation.done:
time.sleep(20)
operation = client.operations.get(operation)
if operation.response:
print(operation.result.generated_videos[0].video.uri)