Index: bp-core/bp-core-templatetags.php
===================================================================
--- bp-core/bp-core-templatetags.php	(revision 3023)
+++ bp-core/bp-core-templatetags.php	(working copy)
@@ -601,13 +601,14 @@
 		$defaults = array(
 			'type' => 'thumb',
 			'width' => false,
-			'height' => false
+			'height' => false,
+			'url' => false
 		);
 
 		$r = wp_parse_args( $args, $defaults );
 		extract( $r, EXTR_SKIP );
 
-		return apply_filters( 'bp_get_loggedin_user_avatar', bp_core_fetch_avatar( array( 'item_id' => $bp->loggedin_user->id, 'type' => $type, 'width' => $width, 'height' => $height ) ) );
+		return apply_filters( 'bp_get_loggedin_user_avatar', bp_core_fetch_avatar( array( 'item_id' => $bp->loggedin_user->id, 'type' => $type, 'width' => $width, 'height' => $height, 'url' => $url ) ) );
 	}
 
 function bp_displayed_user_avatar( $args = '' ) {
@@ -619,13 +620,14 @@
 		$defaults = array(
 			'type' => 'thumb',
 			'width' => false,
-			'height' => false
+			'height' => false,
+			'url' => false
 		);
 
 		$r = wp_parse_args( $args, $defaults );
 		extract( $r, EXTR_SKIP );
 
-		return apply_filters( 'bp_get_displayed_user_avatar', bp_core_fetch_avatar( array( 'item_id' => $bp->displayed_user->id, 'type' => $type, 'width' => $width, 'height' => $height ) ) );
+		return apply_filters( 'bp_get_displayed_user_avatar', bp_core_fetch_avatar( array( 'item_id' => $bp->displayed_user->id, 'type' => $type, 'width' => $width, 'height' => $height, 'url' => $url ) ) );
 	}
 
 function bp_avatar_admin_step() {
Index: bp-core/bp-core-avatars.php
===================================================================
--- bp-core/bp-core-avatars.php	(revision 3023)
+++ bp-core/bp-core-avatars.php	(working copy)
@@ -60,7 +60,8 @@
 		'css_id' => false,
 		'alt' => __( 'Avatar Image', 'buddypress' ),
 		'email' => false, // Pass the user email (for gravatar) to prevent querying the DB for it
-		'no_grav' => false // If there is no avatar found, return false instead of a grav?
+		'no_grav' => false, // If there is no avatar found, return false instead of a grav?
+		'url' => false // Do we output the image or just the url
 	);
 
 	$params = wp_parse_args( $args, $defaults );
@@ -129,7 +130,9 @@
 		}
 		closedir($av_dir);
 
-		if ( $avatar_url )
+		if ( $avatar_url && $url )
+			return apply_filters( 'bp_core_fetch_avatar', $avatar_url, $params, $item_id, $avatar_dir, $css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir );
+		elseif ( $avatar_url )
 			return apply_filters( 'bp_core_fetch_avatar', "<img src='{$avatar_url}' alt='{$alt}' class='{$class}'{$css_id}{$html_width}{$html_height} />", $params, $item_id, $avatar_dir, $css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir );
 	}
 
@@ -162,7 +165,10 @@
 		$email = apply_filters( 'bp_core_gravatar_email', $email, $item_id, $object );
 		$gravatar = apply_filters( 'bp_gravatar_url', $host ) . md5( $email ) . '?d=' . $default_grav . '&amp;s=' . $grav_size;
 
-		return apply_filters( 'bp_core_fetch_avatar', "<img src='{$gravatar}' alt='{$alt}' class='{$class}'{$css_id}{$html_width}{$html_height} />", $params, $item_id, $avatar_dir, $css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir );
+		if ( $url )
+			return apply_filters( 'bp_core_fetch_avatar', $gravatar, $params, $item_id, $avatar_dir, $css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir );
+		else
+			return apply_filters( 'bp_core_fetch_avatar', "<img src='{$gravatar}' alt='{$alt}' class='{$class}'{$css_id}{$html_width}{$html_height} />", $params, $item_id, $avatar_dir, $css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir );
 	} else {
 		return apply_filters( 'bp_core_fetch_avatar', false, $params, $item_id, $avatar_dir, $css_id, $html_width, $html_height, $avatar_folder_url, $avatar_folder_dir );
 	}