MCPcopy Create free account
hub / github.com/KlingAIResearch/VideoAlign / fetch_image

Function fetch_image

vision_process.py:84–126  ·  view source on GitHub ↗
(ele: dict[str, str | Image.Image], size_factor: int = IMAGE_FACTOR)

Source from the content-addressed store, hash-verified

82
83
84def fetch_image(ele: dict[str, str | Image.Image], size_factor: int = IMAGE_FACTOR) -> Image.Image:
85 if "image" in ele:
86 image = ele["image"]
87 else:
88 image = ele["image_url"]
89 image_obj = None
90 if isinstance(image, Image.Image):
91 image_obj = image
92 elif image.startswith("http://") or image.startswith("https://"):
93 image_obj = Image.open(requests.get(image, stream=True).raw)
94 elif image.startswith("file://"):
95 image_obj = Image.open(image[7:])
96 elif image.startswith("data:image"):
97 if "base64," in image:
98 _, base64_data = image.split("base64,", 1)
99 data = base64.b64decode(base64_data)
100 image_obj = Image.open(BytesIO(data))
101 else:
102 image_obj = Image.open(image)
103 if image_obj is None:
104 raise ValueError(f"Unrecognized image input, support local path, http url, base64 and PIL.Image, got {image}")
105 image = image_obj.convert("RGB")
106 ## resize
107 if "resized_height" in ele and "resized_width" in ele:
108 resized_height, resized_width = smart_resize(
109 ele["resized_height"],
110 ele["resized_width"],
111 factor=size_factor,
112 )
113 else:
114 width, height = image.size
115 min_pixels = ele.get("min_pixels", MIN_PIXELS)
116 max_pixels = ele.get("max_pixels", MAX_PIXELS)
117 resized_height, resized_width = smart_resize(
118 height,
119 width,
120 factor=size_factor,
121 min_pixels=min_pixels,
122 max_pixels=max_pixels,
123 )
124 image = image.resize((resized_width, resized_height))
125
126 return image
127
128
129def smart_nframes(

Callers 2

fetch_videoFunction · 0.85
process_vision_infoFunction · 0.85

Calls 1

smart_resizeFunction · 0.85

Tested by

no test coverage detected