Index: wp-admin/custom-header.php
===================================================================
--- wp-admin/custom-header.php	(revision 20792)
+++ wp-admin/custom-header.php	(working copy)
@@ -784,11 +784,15 @@
 	<input type="hidden" name="attachment_id" id="attachment_id" value="<?php echo esc_attr( $id ); ?>" />
 	<input type="hidden" name="oitar" id="oitar" value="<?php echo esc_attr( $oitar ); ?>" />
 	<?php if ( empty( $_POST ) && isset( $_GET['file'] ) ) { ?>
-	<input type="hidden" name="new-attachment" value="true" />
+	<input type="hidden" name="create-new-attachment" value="true" />
 	<?php } ?>
 	<?php wp_nonce_field( 'custom-header-crop-image' ) ?>
 
-	<?php submit_button( __( 'Crop and Publish' ) ); ?>
+	<p class="submit"><?php
+	submit_button( __( 'Crop and Publish' ), 'primary', 'submit', false );
+	if ( isset( $oitar ) && 1 == $oitar )
+		submit_button( __( 'Skip Cropping, Use Image as Is' ), 'primary', 'skip-cropping', false );
+	?>
 	</p>
 </form>
 </div>
@@ -867,12 +871,17 @@
 		else
 			$dst_width = get_theme_support( 'custom-header', 'width' );
 
-		$cropped = wp_crop_image( $attachment_id, (int) $_POST['x1'], (int) $_POST['y1'], (int) $_POST['width'], (int) $_POST['height'], $dst_width, $dst_height );
+		if ( empty( $_POST['skip-cropping'] ) )
+			$cropped = wp_crop_image( $attachment_id, (int) $_POST['x1'], (int) $_POST['y1'], (int) $_POST['width'], (int) $_POST['height'], $dst_width, $dst_height );
+		elseif ( ! empty( $_POST['create-new-attachment'] ) )
+			$cropped = _copy_image_file( $attachment_id );
+		else
+			$cropped = get_attached_file( $attachment_id );
+
 		if ( ! $cropped || is_wp_error( $cropped ) )
 			wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) );
 
 		$cropped = apply_filters('wp_create_file_in_uploads', $cropped, $attachment_id); // For replication
-		$is_cropped = ( get_attached_file( $attachment_id ) != $cropped );
 
 		$parent = get_post($attachment_id);
 		$parent_url = $parent->guid;
@@ -890,7 +899,7 @@
 			'guid' => $url,
 			'context' => 'custom-header'
 		);
-		if ( ! empty( $_POST['new-attachment'] ) )
+		if ( ! empty( $_POST['create-new-attachment'] ) )
 			unset( $object['ID'] );
 
 		// Update the attachment
@@ -913,7 +922,7 @@
 		$medium = str_replace( basename( $original ), 'midsize-' . basename( $original ), $original );
 		if ( file_exists( $medium ) )
 			@unlink( apply_filters( 'wp_delete_file', $medium ) );
-		if ( empty( $_POST['new-attachment'] ) && $is_cropped )
+		if ( empty( $_POST['create-new-attachment'] ) && empty( $_POST['skip-cropping'] ) )
 			@unlink( apply_filters( 'wp_delete_file', $original ) );
 
 		return $this->finished();
Index: wp-admin/includes/image.php
===================================================================
--- wp-admin/includes/image.php	(revision 20792)
+++ wp-admin/includes/image.php	(working copy)
@@ -44,9 +44,6 @@
  * @return string|WP_Error|false New filepath on success, WP_Error or false on failure.
  */
 function wp_crop_image( $src, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs = false, $dst_file = false ) {
-	if ( 0 == $src_x && 0 == $src_y && $src_w == $dst_w && $src_h == $dst_h )
-		return ( is_numeric( $src ) ) ? get_attached_file( $src ) : $src;
-
 	if ( is_numeric( $src ) ) { // Handle int as attachment ID
 		$src_file = get_attached_file( $src );
 		if ( ! file_exists( $src_file ) ) {
@@ -366,19 +363,19 @@
 	return apply_filters('file_is_displayable_image', $result, $path);
 }
 
-function load_image_to_edit($post_id, $mime_type, $size = 'full') {
-	$filepath = get_attached_file($post_id);
-
-	if ( $filepath && file_exists($filepath) ) {
-		if ( 'full' != $size && ( $data = image_get_intermediate_size($post_id, $size) ) ) {
-			$filepath = apply_filters('load_image_to_edit_filesystempath', path_join( dirname($filepath), $data['file'] ), $post_id, $size);
-		}
-	} elseif ( function_exists('fopen') && function_exists('ini_get') && true == ini_get('allow_url_fopen') ) {
-		$filepath = apply_filters('load_image_to_edit_attachmenturl', wp_get_attachment_url($post_id) , $post_id, $size);
-	}
-
-	$filepath = apply_filters('load_image_to_edit_path', $filepath, $post_id, $size);
-	if ( empty($filepath) )
+/**
+ * Load an image resource for editing.
+ *
+ * @since 2.9.0
+ *
+ * @param string $attachment_id Attachment ID.
+ * @param string $mime_type Image mime type.
+ * @param string $size Optional. Image size, defaults to 'full'.
+ * @return resource|false The resulting image resource on success, false on failure.
+ */
+function load_image_to_edit( $attachment_id, $mime_type, $size = 'full' ) {
+	$filepath = _load_image_to_edit_path( $attachment_id, $size );
+	if ( empty( $filepath ) )
 		return false;
 
 	switch ( $mime_type ) {
@@ -396,7 +393,7 @@
 			break;
 	}
 	if ( is_resource($image) ) {
-		$image = apply_filters('load_image_to_edit', $image, $post_id, $size);
+		$image = apply_filters('load_image_to_edit', $image, $attachment_id, $size);
 		if ( function_exists('imagealphablending') && function_exists('imagesavealpha') ) {
 			imagealphablending($image, false);
 			imagesavealpha($image, true);
@@ -404,3 +401,53 @@
 	}
 	return $image;
 }
+
+/**
+ * Attempt to load an attachment from URL (for replication plugins).
+ *
+ * @since 3.4.0
+ * @access private
+ *
+ * @param string $attachment_id Attachment ID.
+ * @param string $size Optional. Image size, defaults to 'full'.
+ * @return string|false File path on success, false on failure.
+ */
+function _load_image_to_edit_path( $attachment_id, $size = 'full' ) {
+	$filepath = get_attached_file( $attachment_id );
+
+	if ( $filepath && file_exists( $filepath ) ) {
+		if ( 'full' != $size && ( $data = image_get_intermediate_size( $attachment_id, $size ) ) ) {
+			$filepath = apply_filters( 'load_image_to_edit_filesystempath', path_join( dirname( $filepath ), $data['file'] ), $attachment_id, $size );
+		}
+	} elseif ( function_exists( 'fopen' ) && function_exists( 'ini_get' ) && true == ini_get( 'allow_url_fopen' ) ) {
+		$filepath = apply_filters( 'load_image_to_edit_attachmenturl', wp_get_attachment_url( $attachment_id ), $attachment_id, $size );
+	}
+
+	return apply_filters( 'load_image_to_edit_path', $filepath, $attachment_id, $size );
+}
+
+/**
+ * Copy an existing image file.
+ *
+ * @since 3.4.0
+ * @access private
+ *
+ * @param string $attachment_id Attachment ID.
+ * @return string|false New file path on success, false on failure.
+ */
+function _copy_image_file( $attachment_id ) {
+	$dst_file = $src_file = get_attached_file( $attachment_id );
+	if ( ! file_exists( $src_file ) ) 
+		$src_file = _load_image_to_edit_path( $attachment_id );
+
+	if ( $src_file ) {
+		$dst_file = str_replace( basename( $dst_file ), 'copy-' . basename( $dst_file ), $dst_file );
+		$dst_file = dirname( $dst_file ) . '/' . wp_unique_filename( dirname( $dst_file ), basename( $dst_file ) ); 
+		if ( ! @copy( $src_file, $dst_file ) )
+			$dst_file = false;
+	} else {
+		$dst_file = false;
+	}
+
+	return $dst_file;
+}
