From 2527a43c1ee9fa5b2d87795125bd7b336d8aa0a5 Mon Sep 17 00:00:00 2001 From: Matthew Tang Date: Thu, 12 Feb 2026 11:27:37 -0800 Subject: [PATCH] feat: Add ImageResizeMode for GenerateVideos PiperOrigin-RevId: 869306823 --- google/genai/models.py | 10 ++++++++++ .../genai/tests/models/test_generate_videos.py | 2 ++ google/genai/types.py | 18 ++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/google/genai/models.py b/google/genai/models.py index 913bacd3b..1431baf6c 100644 --- a/google/genai/models.py +++ b/google/genai/models.py @@ -2155,6 +2155,9 @@ def _GenerateVideosConfig_to_mldev( if getv(from_object, ['labels']) is not None: raise ValueError('labels parameter is not supported in Gemini API.') + if getv(from_object, ['resize_mode']) is not None: + raise ValueError('resize_mode parameter is not supported in Gemini API.') + return to_object @@ -2281,6 +2284,13 @@ def _GenerateVideosConfig_to_vertex( if getv(from_object, ['labels']) is not None: setv(parent_object, ['labels'], getv(from_object, ['labels'])) + if getv(from_object, ['resize_mode']) is not None: + setv( + parent_object, + ['parameters', 'resizeMode'], + getv(from_object, ['resize_mode']), + ) + return to_object diff --git a/google/genai/tests/models/test_generate_videos.py b/google/genai/tests/models/test_generate_videos.py index ceb81ad6d..a55aabd3b 100644 --- a/google/genai/tests/models/test_generate_videos.py +++ b/google/genai/tests/models/test_generate_videos.py @@ -304,6 +304,8 @@ def test_text_and_image_to_video_poll(client): image=GCS_IMAGE if client.vertexai else LOCAL_IMAGE, config=types.GenerateVideosConfig( output_gcs_uri=OUTPUT_GCS_URI if client.vertexai else None, + resize_mode=(types.ImageResizeMode.CROP + if client.vertexai else None), ), ) while not operation.done: diff --git a/google/genai/types.py b/google/genai/types.py index 686425400..e151c8da3 100644 --- a/google/genai/types.py +++ b/google/genai/types.py @@ -1006,6 +1006,17 @@ class VideoCompressionQuality(_common.CaseInSensitiveEnum): with a larger file size.""" +class ImageResizeMode(_common.CaseInSensitiveEnum): + """Resize mode for the image input for video generation.""" + + CROP = 'CROP' + """Crop the image to fit the correct aspect ratio (so we lose parts + of the image in the process).""" + PAD = 'PAD' + """Pad the image to fit the correct aspect ratio (so we don't lose + any parts of the image in the process).""" + + class TuningMethod(_common.CaseInSensitiveEnum): """Enum representing the tuning method.""" @@ -11181,6 +11192,10 @@ class GenerateVideosConfig(_common.BaseModel): default=None, description="""User specified labels to track billing usage.""", ) + resize_mode: Optional[ImageResizeMode] = Field( + default=None, + description="""Resize mode of the image input for video generation.""", + ) class GenerateVideosConfigDict(TypedDict, total=False): @@ -11253,6 +11268,9 @@ class GenerateVideosConfigDict(TypedDict, total=False): labels: Optional[dict[str, str]] """User specified labels to track billing usage.""" + resize_mode: Optional[ImageResizeMode] + """Resize mode of the image input for video generation.""" + GenerateVideosConfigOrDict = Union[ GenerateVideosConfig, GenerateVideosConfigDict