Index: wp-includes/media.php
===================================================================
--- wp-includes/media.php	(revision 18977)
+++ wp-includes/media.php	(working copy)
@@ -264,6 +264,106 @@
 }
 
 /**
+ * Default images for themes
+ * 
+ * Builds an default <img> for use in themes or plugins before any other images are added.
+ * Resizes & crops the image using the built-in (retireved via `get_intermediate_image_sizes();`) 
+ * or custom image (added via `add_image_size();`) sizes.
+ * 
+ * Retrieves calculated resize dimension @uses image_resize_dimensions();
+ * Builds the width and height string @uses image_hwstring();
+ * 
+ * @param $args (array)
+ * 		string $url URl to the given default image.
+ * 		string $size Optional. Default is 'medium'.
+ * 		string (optional) $alt Image Description for the alt attribute.
+ * 		string (optional) $title Image Description for the title attribute.
+ * 		string (optional) $align Part of the class name for aligning the image.
+ * 		string (optional) $echo Wheter to return or echo the $image
+ * @return string HTML IMG element for given image attachment
+ */
+function wp_default_img( $attr )
+{
+	// Sizes registered via add_image_size();
+	global $_wp_additional_image_sizes;
+
+	$defaults = array(
+		 'size'		=> 'medium'
+		,'classes'	=> false
+		,'alt'		=> false
+		,'title'	=> false
+		,'align'	=> 'none'
+		,'echo'		=> true 
+	);
+
+	$attr = wp_parse_args( $attr, $defaults );
+
+	if ( 'thumb' === $attr['size'] )
+		$attr['size'] = 'thumbnail';
+
+	// Size in built in sizes - call size setting from DB
+	# behavoir in here, dependent on outcome of @link http://core.trac.wordpress.org/ticket/18947
+	if ( ! in_array( $attr['size'], array_keys( $_wp_additional_image_sizes ) ) )
+	{
+		$sizes				= get_intermediate_image_sizes();
+		// Get option - gladly autoloaded/can use wp_cache_get();
+		$size_data['width']	= intval( get_option( "{$attr['size']}_size_w") );
+		$size_data['height']= intval( get_option( "{$attr['size']}_size_h") );
+		// Not sure how this will behave if cropped is false (autoloaded option not added)
+		$size_data['crop']	= get_option( "{$attr['size']}_crop" ) ? get_option( "{$attr['size']}_crop" ) : false;
+	}
+	// Size array from global registered additional/custom sizes array
+	else 
+	{
+		$size_data = $_wp_additional_image_sizes[ $attr['size'] ];
+	}
+
+	// Retrieve image width & height
+	$img_info	= @getimagesize( $attr['url'] );
+
+	// Calculate final dimensions - if "crop" was set to true during add_image_size(), the img will get ... cropped
+	$end_sizes	= image_resize_dimensions( $img_info[0], $img_info[1], $size_data['width'], $size_data['height'], $size_data['crop'] );
+
+	// defaults to px units - can't get changed, as applying units is not possible
+	$hwstring	= ' '.trim( image_hwstring( $end_sizes[4], $end_sizes[5] ) );
+
+	// Attributes:
+	// Not made required as users tend to do funky things (...and lock screen readers out)
+	$attr['alt'] = $attr['alt'] ? ' alt="'.esc_attr( $attr['alt'] ).'"' : '';
+
+	if ( ! $attr['title'] )
+	{
+		$mime = explode( "/", $img_info['mime'] );
+		$attr['title'] = sprintf( __('default image of type: %1$s'), ucfirst( $mime[1] ) );
+	}
+	$attr['title'] = $attr['title'] ? ' title="'.esc_attr( $attr['title'] ).'"' : '';
+
+	$attr['classes'] = "wp-img-default ".esc_attr( $attr['classes'] ? $attr['classes'] : '' );
+	$attr['align'] = $attr['align'] ? "align".esc_attr( $attr['align'] ) : '';
+	$attr['size'] = "size-".esc_attr( $attr['size'] );
+
+	// Allow filtering of the default attributes
+	$attributes	= apply_filters( 'wp_default_img_attr', $attr );
+
+	// Build class attribute, considering that maybe some attribute was unset via the filter
+	$classes  = ' class="';
+	$classes .= 'wp-img-default'.esc_attr( $attr['classes'] ? ' '.$attr['classes'] : '' );
+	$classes .= $attr['align'] ? ' '.esc_attr( $attr['align'] ) : '';
+	$classes .= $attr['size'] ? ' '.esc_attr( $attr['size'] ).'" ' : '" ';
+
+	$url		= trim( $attr['url'] );
+	$image		= "<img src='{$url}'{$hwstring}{$classes}{$attr['alt']}{$attr['title']} />";
+
+	// Allow filtering of output
+	$image 		= apply_filters( 'wp_default_img', $image );
+
+	if ( ! $attr['echo'] )
+		return $image;
+
+	return print $image;
+}
+
+/**
  * Calculates the new dimensions for a downsampled image.
  *
  * If either width or height are empty, no constraint is applied on
