diff --git a/wp-includes/class-wp-image-editor-gd.php b/wp-includes/class-wp-image-editor-gd.php index 4b0fdae804..12aaece1eb 100644 --- a/wp-includes/class-wp-image-editor-gd.php +++ b/wp-includes/class-wp-image-editor-gd.php @@ -401,4 +401,22 @@ class WP_Image_Editor_GD extends WP_Image_Editor { return imagejpeg( $this->image, null, $this->quality ); } } + + /** + * Either calls editor's save function or handles file as a stream. + * + * @since 3.5.0 + * @access protected + * + * @param string|stream $filename + * @param callable $function + * @param array $arguments + * @return boolean + */ + protected function make_image( $filename, $function, $arguments ) { + if ( wp_is_stream( $filename ) ) + $arguments[1] = null; + + return parent::make_image( $filename, $function, $arguments ); + } } diff --git a/wp-includes/class-wp-image-editor.php b/wp-includes/class-wp-image-editor.php index 1d7b80e45d..3c2e1b3d43 100644 --- a/wp-includes/class-wp-image-editor.php +++ b/wp-includes/class-wp-image-editor.php @@ -327,14 +327,11 @@ abstract class WP_Image_Editor { * @return boolean */ protected function make_image( $filename, $function, $arguments ) { - $dst_file = $filename; - - // The directory containing the original file may no longer exist when using a replication plugin. - wp_mkdir_p( dirname( $dst_file ) ); - if ( $stream = wp_is_stream( $filename ) ) { - $filename = null; ob_start(); + } else { + // The directory containing the original file may no longer exist when using a replication plugin. + wp_mkdir_p( dirname( $filename ) ); } $result = call_user_func_array( $function, $arguments ); @@ -342,7 +339,7 @@ abstract class WP_Image_Editor { if ( $result && $stream ) { $contents = ob_get_contents(); - $fp = fopen( $dst_file, 'w' ); + $fp = fopen( $filename, 'w' ); if ( ! $fp ) return false;