From 698aa0e5641174a632057018cffee8ff2895c860 Mon Sep 17 00:00:00 2001 From: Andrew Ozz Date: Thu, 7 Nov 2019 18:49:17 +0000 Subject: [PATCH] Upload: When an image was scaled because it is larger than the big image threshold, use the originally uploaded image's dimensions in `wp_get_missing_image_subsizes()`. Fixes an edge case/inconsistent behaviour when a registered image sub-size is also larger than the big image threshold. Props desrosj, azaozz. Fixes #48518 for trunk. git-svn-id: https://develop.svn.wordpress.org/trunk@46677 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/image.php | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/wp-admin/includes/image.php b/src/wp-admin/includes/image.php index 767f754a34..b05c70c15b 100644 --- a/src/wp-admin/includes/image.php +++ b/src/wp-admin/includes/image.php @@ -90,8 +90,20 @@ function wp_get_missing_image_subsizes( $attachment_id ) { return $registered_sizes; } - $full_width = (int) $image_meta['width']; - $full_height = (int) $image_meta['height']; + // Use the originally uploaded image dimensions as full_width and full_height. + if ( ! empty( $image_meta['original_image'] ) ) { + $image_file = wp_get_original_image_path( $attachment_id ); + $imagesize = @getimagesize( $image_file ); + } + + if ( ! empty( $imagesize ) ) { + $full_width = $imagesize[0]; + $full_height = $imagesize[1]; + } else { + $full_width = (int) $image_meta['width']; + $full_height = (int) $image_meta['height']; + } + $possible_sizes = array(); // Skip registered sizes that are too large for the uploaded image.