From 82fe05578b4e5324a8e16d7be7fc5919eb7874dc Mon Sep 17 00:00:00 2001 From: JJ Date: Fri, 31 Oct 2025 00:54:42 +0000 Subject: [PATCH] size fix --- nodes/image_nodes.py | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/nodes/image_nodes.py b/nodes/image_nodes.py index 6a57cf9..6ca5f20 100644 --- a/nodes/image_nodes.py +++ b/nodes/image_nodes.py @@ -565,9 +565,10 @@ class WanScaleAB: def _calculate_s1_s2(self, image_A, A2size): """ Calculate s1 and s2 based on the special scaling rules. - - s1: Find the closest number to A2size that can divide the largest side of image_A fully once, - then adjust to be divisible by 16 (rounding up if needed) + + s1: Target the largest side to be approximately A2size (rounded up to a multiple of 16), + regardless of how many times A2size fits into the original largest side. This ensures + A2size is respected as the intended output size for the larger dimension. s2: Proportionally scale the smallest side to match s1, then adjust to be divisible by 16 (rounding up) """ # Get original dimensions @@ -581,18 +582,10 @@ class WanScaleAB: largest_side = w smallest_side = h - # Step 1: Find s1 - # Find how many times A2size fits into the largest side - times_fit = largest_side // A2size - if times_fit == 0: - times_fit = 1 # Ensure at least once - - # Calculate the closest number that could divide the largest side by A2size fully once - base_s1 = A2size * times_fit - - # Find the closest number to base_s1 that is divisible by 16 - s1 = self._round_up_to_multiple(base_s1, 16) - + # Step 1: Compute s1 so that the output's largest side is ~A2size + # Round A2size up to the nearest multiple of 16 to satisfy model constraints + s1 = self._round_up_to_multiple(A2size, 16) + # Step 2: Find s2 # Calculate the proportional scaling factor scale_factor = s1 / largest_side