Fix the interpolation logic error in resize_image()

The original code had a mistake. It used 'lanczos' when the image got smaller (width > resized_width and height > resized_height) and 'area' when it stayed the same or got bigger. This was the wrong way. 'area' is better for big shrinking.
This commit is contained in:
Lex Song
2025-04-02 03:32:36 +08:00
parent ede3470260
commit b822b7e60b

View File

@@ -421,8 +421,11 @@ def resize_image(image: np.ndarray, width: int, height: int, resized_width: int,
resized_height = int(resized_height)
if resize_interpolation is None:
resize_interpolation = "lanczos" if width > resized_width and height > resized_height else "area"
if width >= resized_width and height >= resized_height:
resize_interpolation = "area"
else:
resize_interpolation = "lanczos"
# we use PIL for lanczos (for backward compatibility) and box, cv2 for others
use_pil = resize_interpolation in ["lanczos", "lanczos4", "box"]