Changeset 15002
 Timestamp:
 05/27/2010 08:37:42 PM (10 years ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

trunk/wpincludes/media.php
r14981 r15002 279 279 $width_ratio = $height_ratio = 1.0; 280 280 281 if ( $max_width > 0 && $current_width > 0 && $current_width > $max_width ) 281 if ( $max_width > 0 && $current_width > 0 && $current_width > $max_width ) { 282 282 $width_ratio = $max_width / $current_width; 283 284 if ( $max_height > 0 && $current_height > 0 && $current_height > $max_height ) 283 $did_width = true; 284 } 285 286 if ( $max_height > 0 && $current_height > 0 && $current_height > $max_height ) { 285 287 $height_ratio = $max_height / $current_height; 286 287 // the smaller ratio is the one we need to fit it to the constraining box 288 $ratio = min( $width_ratio, $height_ratio ); 289 290 return array( intval($current_width * $ratio), intval($current_height * $ratio) ); 288 $did_height = true; 289 } 290 291 // Calculate the larger/smaller ratios 292 $smaller_ratio = min( $width_ratio, $height_ratio ); 293 $larger_ratio = max( $width_ratio, $height_ratio ); 294 295 if ( intval( $current_width * $larger_ratio ) > $max_width  intval( $current_height * $larger_ratio ) > $max_height ) 296 // The larger ratio is too big. It would result in an overflow. 297 $ratio = $smaller_ratio; 298 else 299 // The larger ratio fits, and is likely to be a more "snug" fit. 300 $ratio = $larger_ratio; 301 302 $w = intval( $current_width * $ratio ); 303 $h = intval( $current_height * $ratio ); 304 305 // Sometimes, due to rounding, we'll end up with a result like this: 465x700 in a 177x177 box is 117x176... a pixel short 306 // We also have issues with recursive calls resulting in an everchanging result. Contraining to the result of a constraint should yield the original result. 307 // Thus we look for dimensions that are one pixel shy of the max value and bump them up 308 if ( isset( $did_width ) && $did_width && $w == $max_width  1 ) 309 $w = $max_width; // Round it up 310 if ( isset( $did_height ) && $did_height && $h == $max_height  1 ) 311 $h = $max_height; // Round it up 312 313 return array( $w, $h ); 291 314 } 292 315 … … 522 545 // First, we calculate what size the original image would be if constrained to a box the size of the current image in the loop 523 546 $maybe_cropped = image_resize_dimensions($imagedata['width'], $imagedata['height'], $data['width'], $data['height'], false ); 524 // If the size doesn't match exactly, then it is of a different aspect ratio, so we skip it, unless it's the thumbnail size525 if ( 'thumbnail' != $_size && ( !$maybe_cropped  $maybe_cropped[4] != $data['width']  $maybe_cropped[5] != $data['height']) )547 // If the size doesn't match within one pixel, then it is of a different aspect ratio, so we skip it, unless it's the thumbnail size 548 if ( 'thumbnail' != $_size && ( !$maybe_cropped  ( $maybe_cropped[4] != $data['width'] && $maybe_cropped[4] + 1 != $data['width'] )  ( $maybe_cropped[5] != $data['height'] && $maybe_cropped[5] + 1 != $data['height'] ) ) ) 526 549 continue; 527 550 // If we're still here, then we're going to use this size
Note: See TracChangeset
for help on using the changeset viewer.