Adirazgold commited on
Commit
6435505
·
verified ·
1 Parent(s): b2280ea

set resize_and_pad_centered_to_long_side as resize function

Browse files
Files changed (1) hide show
  1. processing_colgranitevision.py +47 -1
processing_colgranitevision.py CHANGED
@@ -133,14 +133,60 @@ class ColGraniteVisionProcessor(LlavaNextProcessor):
133
  """
134
  Resize and pad the image to the required format.
135
  """
136
- return self.resize_and_pad_centered(
137
  image=image,
138
  factor=self.factor,
139
  min_size=self.min_size,
140
  max_size=self.max_size,
141
  fill_color=0
142
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
  def resize_and_pad_centered(self,
145
  image: Image.Image,
146
  factor: int,
 
133
  """
134
  Resize and pad the image to the required format.
135
  """
136
+ return self.resize_and_pad_centered_to_long_side(
137
  image=image,
138
  factor=self.factor,
139
  min_size=self.min_size,
140
  max_size=self.max_size,
141
  fill_color=0
142
  )
143
+
144
+ def resize_and_pad_centered_to_long_side(
145
+ self,
146
+ image: Image.Image,
147
+ factor: int,
148
+ min_size: int,
149
+ max_size: int,
150
+ fill_color=0
151
+ ) -> Image.Image:
152
+ """
153
+ Resizes and pads an image such that:
154
+ - The long side is set to `max_size`.
155
+ - The short side is scaled proportionally but not below `min_size`.
156
+ - The image is centered within the final padded area.
157
+
158
+ :param image: PIL Image
159
+ :param factor: Factor to make dimensions divisible by
160
+ :param min_size: Minimum allowed size for the short side
161
+ :param max_size: Target size for the long side
162
+ :param fill_color: Background padding color (default black)
163
+ :return: Resized and padded image
164
+ """
165
+
166
+ # Get original size
167
+ width, height = image.size
168
 
169
+ if min_size == -1 or max_size == -1:
170
+ return image.convert("RGB")
171
+
172
+ # Step 1: scale long side to max_size, keep aspect ratio
173
+ if width > height:
174
+ scale_factor = max_size / width
175
+ target_width = max_size
176
+ max_scale_factor = max(min_size / height, scale_factor)
177
+ target_height = round(height * max_scale_factor)
178
+ else:
179
+ scale_factor = max_size / height
180
+ target_height = max_size
181
+ max_scale_factor = max(min_size / width, scale_factor)
182
+ target_width = round(width * max_scale_factor)
183
+
184
+ # Resize the image
185
+ resized_image = image.resize((target_width, target_height), Image.LANCZOS)
186
+ final_image =resized_image.convert("RGB")
187
+
188
+ return final_image
189
+
190
  def resize_and_pad_centered(self,
191
  image: Image.Image,
192
  factor: int,