WordPress.org

Make WordPress Core

Ticket #12218: do_not_use_crops_for_image_get_intermediate_size.diff

File do_not_use_crops_for_image_get_intermediate_size.diff, 1.2 KB (added by markjaquith, 4 years ago)
  • wp-includes/media.php

     
    484484                        foreach ( $areas as $_size ) { 
    485485                                $data = $imagedata['sizes'][$_size]; 
    486486                                if ( $data['width'] >= $size[0] || $data['height'] >= $size[1] ) { 
     487                                        // Skip images with unexpectedly divergent aspect ratios (crops) 
     488                                        // First, we calculate what size the original image would be if constrained to a box the size of the current image in the loop 
     489                                        $maybe_cropped = image_resize_dimensions($imagedata['width'], $imagedata['height'], $data['width'], $data['height'], false ); 
     490                                        // If the size doesn't match exactly, then it is of a different aspect ratio, so we skip it, unless it's the thumbnail size 
     491                                        if ( 'thumbnail' != $_size && ( !$maybe_cropped || $maybe_cropped[0] != $data['width'] || $maybe_cropped[1] != $data['height'] ) ) 
     492                                                continue; 
     493                                        // If we're still here, then we're going to use this size 
    487494                                        $file = $data['file']; 
    488495                                        list($width, $height) = image_constrain_size_for_editor( $data['width'], $data['height'], $size ); 
    489496                                        return compact( 'file', 'width', 'height' );