diff --git a/src/wp-admin/includes/image.php b/src/wp-admin/includes/image.php index 1e265d45f7..41efa0ad13 100644 --- a/src/wp-admin/includes/image.php +++ b/src/wp-admin/includes/image.php @@ -581,13 +581,18 @@ function wp_generate_attachment_metadata( $attachment_id, $file ) { // Resize based on the full size image, rather than the source. if ( ! is_wp_error( $uploaded ) ) { - $editor = wp_get_image_editor( $uploaded['path'] ); + $image_file = $uploaded['path']; unset( $uploaded['path'] ); - if ( ! is_wp_error( $editor ) ) { - $metadata['sizes'] = $editor->multi_resize( $merged_sizes ); - $metadata['sizes']['full'] = $uploaded; - } + $metadata['sizes'] = array( + 'full' => $uploaded, + ); + + // Save the meta data before any image post-processing errors could happen. + wp_update_attachment_metadata( $attachment_id, $metadata ); + + // Create sub-sizes saving the image meta after each. + $metadata = _wp_make_subsizes( $merged_sizes, $image_file, $metadata, $attachment_id ); } } } diff --git a/tests/phpunit/tests/image/functions.php b/tests/phpunit/tests/image/functions.php index 4d385ae2dc..8fa47c65a5 100644 --- a/tests/phpunit/tests/image/functions.php +++ b/tests/phpunit/tests/image/functions.php @@ -435,10 +435,10 @@ class Tests_Image_Functions extends WP_UnitTestCase { $expected = array( 'sizes' => array( - 'thumbnail' => array( - 'file' => 'wordpress-gsoc-flyer-pdf-116x150.jpg', - 'width' => 116, - 'height' => 150, + 'full' => array( + 'file' => 'wordpress-gsoc-flyer-pdf.jpg', + 'width' => 1088, + 'height' => 1408, 'mime-type' => 'image/jpeg', ), 'medium' => array( @@ -453,10 +453,10 @@ class Tests_Image_Functions extends WP_UnitTestCase { 'height' => 1024, 'mime-type' => 'image/jpeg', ), - 'full' => array( - 'file' => 'wordpress-gsoc-flyer-pdf.jpg', - 'width' => 1088, - 'height' => 1408, + 'thumbnail' => array( + 'file' => 'wordpress-gsoc-flyer-pdf-116x150.jpg', + 'width' => 116, + 'height' => 150, 'mime-type' => 'image/jpeg', ), ), @@ -500,10 +500,10 @@ class Tests_Image_Functions extends WP_UnitTestCase { $expected = array( 'sizes' => array( - 'thumbnail' => array( - 'file' => 'wordpress-gsoc-flyer-pdf-116x150.jpg', - 'width' => 116, - 'height' => 150, + 'full' => array( + 'file' => 'wordpress-gsoc-flyer-pdf.jpg', + 'width' => 1088, + 'height' => 1408, 'mime-type' => 'image/jpeg', ), 'medium' => array( @@ -518,10 +518,10 @@ class Tests_Image_Functions extends WP_UnitTestCase { 'height' => 1024, 'mime-type' => 'image/jpeg', ), - 'full' => array( - 'file' => 'wordpress-gsoc-flyer-pdf.jpg', - 'width' => 1088, - 'height' => 1408, + 'thumbnail' => array( + 'file' => 'wordpress-gsoc-flyer-pdf-116x150.jpg', + 'width' => 116, + 'height' => 150, 'mime-type' => 'image/jpeg', ), ),