Index: wp-admin/includes/image-edit.php
===================================================================
--- wp-admin/includes/image-edit.php	(revision 26234)
+++ wp-admin/includes/image-edit.php	(working copy)
@@ -203,6 +203,14 @@
  */
 function wp_stream_image( $image, $mime_type, $post_id ) {
 	if ( $image instanceof WP_Image_Editor ) {
+		/**
+		 * Filter the WP_Image_Editor instance for the image to be streamed to the browser.
+		 *
+		 * @since 3.5.0
+		 *
+		 * @param WP_Image_Editor 	$image 		WP_Image_Editor instance.
+		 * @param int 				$post_id 	Post id.
+		 */
 		$image = apply_filters('image_editor_save_pre', $image, $post_id);
 
 		if ( is_wp_error( $image->stream( $mime_type ) ) )
@@ -212,8 +220,15 @@
 	} else {
 		_deprecated_argument( __FUNCTION__, '3.5', __( '$image needs to be an WP_Image_Editor object' ) );
 
+		/**
+		 * Filter the GD image resource to be streamed to the browser.
+		 *
+		 * @since 2.9.0
+		 *
+		 * @param resource  $image 		Image resource to be streamed.
+		 * @param int 		$post_id 	Post id.
+		 */
 		$image = apply_filters('image_save_pre', $image, $post_id);
-
 		switch ( $mime_type ) {
 			case 'image/jpeg':
 				header( 'Content-Type: image/jpeg' );
@@ -241,7 +256,29 @@
  */
 function wp_save_image_file( $filename, $image, $mime_type, $post_id ) {
 	if ( $image instanceof WP_Image_Editor ) {
+		/**
+		 * Filter the WP_Image_Editor instance for the image to be saved.
+		 *
+		 * @since 3.5.0
+		 *
+		 * @param WP_Image_Editor 	$image 		WP_Image_Editor instance.
+		 * @param int 				$post_id 	Post id.
+		 */
 		$image = apply_filters('image_editor_save_pre', $image, $post_id);
+
+		/**
+		 *
+		 * This filter changes the returned value of the function and returns
+		 * the function before invoking the WP_Image_Editor::save method.
+		 *
+		 * @since 3.5.0
+		 *
+		 * @param 								Value for the function to return.
+		 * @param string 			$filename 	Name of the file to be saved.
+		 * @param WP_Image_Editor 	$image 		WP_Image_Editor instance.
+		 * @param string 			$mime_type 	Image Mime Type.
+		 * @param int 				$post_id 	Post id.
+		 */
 		$saved = apply_filters('wp_save_image_editor_file', null, $filename, $image, $mime_type, $post_id);
 
 		if ( null !== $saved )
@@ -251,7 +288,28 @@
 	} else {
 		_deprecated_argument( __FUNCTION__, '3.5', __( '$image needs to be an WP_Image_Editor object' ) );
 
+		/**
+		 * Filter the GD image resource to be saved.
+		 *
+		 * @since 2.9.0
+		 *
+		 * @param resource  $image 		GD image resource to be saved.
+		 * @param int 		$post_id 	Post id.
+		 */
 		$image = apply_filters('image_save_pre', $image, $post_id);
+
+		/**
+		 * This filter changes the returned value of the function and returns
+		 * the function before invoking the GD image creation functions.
+		 *
+		 * @since 2.9.0
+		 *
+		 * @param 								Value for the function to return.
+		 * @param string 			$filename 	Name of the file to be saved.
+		 * @param WP_Image_Editor 	$image 		WP_Image_Editor instance.
+		 * @param string 			$mime_type 	Image Mime Type.
+		 * @param int 				$post_id 	Post id.
+		 */
 		$saved = apply_filters('wp_save_image_file', null, $filename, $image, $mime_type, $post_id);
 
 		if ( null !== $saved )
@@ -259,6 +317,7 @@
 
 		switch ( $mime_type ) {
 			case 'image/jpeg':
+				/** This filter is documented in wp-includes/class-wp-image-editor-imagick.php */
 				return imagejpeg( $image, $filename, apply_filters( 'jpeg_quality', 90, 'edit_image' ) );
 			case 'image/png':
 				return imagepng( $image, $filename );
@@ -397,10 +456,27 @@
 	}
 
 	// image resource before applying the changes
-	if ( $image instanceof WP_Image_Editor )
+	if ( $image instanceof WP_Image_Editor ) {
+		/**
+		 * Filter the WP_Image_Editor instance before applying changes to the image.
+		 *
+		 * @since 3.5.0
+		 *
+		 * @param WP_Image_Editor 	$image 		WP_Image_Editor instance.
+ 		 * @param array 			$changes 	Array of change operations.
+		 */
 		$image = apply_filters('wp_image_editor_before_change', $image, $changes);
-	elseif ( is_resource( $image ) )
+	} elseif ( is_resource( $image ) ) {
+		/**
+		 * Filter the GD image resource before applying changes to the image.
+		 *
+		 * @since 2.9.0
+		 *
+		 * @param resource 	$image 		GD image resource.
+ 		 * @param array 	$changes 	Array of change operations.
+		 */
 		$image = apply_filters('image_edit_before_change', $image, $changes);
+	}
 
 	foreach ( $changes as $operation ) {
 		switch ( $operation->type ) {
@@ -450,6 +526,7 @@
  */
 function stream_preview_image( $post_id ) {
 	$post = get_post( $post_id );
+	/** This filter is documented in wp-admin/admin.php */
 	@ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) );
 
 	$img = wp_get_image_editor( _load_image_to_edit_path( $post_id ) );
