I was developing discussion groups using web parts where I needed to show the discussion posting authors' profile images with the posting detail.
First problem I faced was, how to get the profile image url of the user. I was able to find the details about the User Information List living in the RootSite of the site collection. I was able to get the related user info by getting the list item as below and get the "Picture" property value
and properly formatting it.
userPictureUrl = SPContext.Current.Site.RootWeb.SiteUserInfoList.GetItemById(itemCreator.ID)["Picture"].ToString();
SPFieldUrlValue userProfileImage = new SPFieldUrlValue(userPictureUrl);
authorProfileImageUrl = (new Uri(userProfileImage.Url)).AbsolutePath;
But, then I faced the next issue of viewing user's profile image as an anonymous user. To achieve that I had to go through the below process of granting anonymous users access to List and libraries in the mys site site collection and granting "View Items" access to user profile pictures library.
Go to http://<<MysiteSitecollection web url>>/_layouts/settings.aspx
Go to "Site Permissions" and click Anonymous Access from the ribbon
Select "Lists and libraries" and click "OK".
Go to View All Site Content -> User Photos -> Settings (Picture Library Settings)
Go to "Permissions for this picture library"
Click "Stop Inheriting Permissions"
Click "Anonymous Access" from the ribbon
Check off "View Items" and click "OK"
After performing the above steps anonymous users were able to get access to profile pictures of other users.