2015-10-14 2 views
0

Все больше и больше я видящих компания устанавливает пользователь профиля по умолчанию изображения, как показана на скриншоте ниже которого находится на домашней странице Google ...Установить профиль пользователя по умолчанию картинка с изображением их инициалов

enter image description here

Как Google достиг этого? Какие API для PHP и C# можно использовать для достижения этого?

+0

DId вы сдаете? –

+0

проверить этот url [создать изображение аватара круга] (http://stackoverflow.com/questions/28527390/create-a-circle-avatar-image-in-net) – Cagdas

ответ

-1

Вы можете сохранить одно изображение для каждой буквы в

/your_path/a.png 
/your_path/b.bng, 
/your_path/c.png 
... 

При загрузке профиля пользователя, если пользователь не имеет изображения файла в БД, загрузке файла изображения с его/ее вместо этого.

Например ...

SELECT name, address, 
COALESCE(picture, CONCAT("/your_path/", LEFT(name, 1),".png")) as picture 
FROM users_table WHERE... ; 

Таким образом, когда пользователь имеет изображение, изображение файла загружается, если нет, то имя файла для файла с его инициалами загружается (если вы используете mysql для хранения ваших данных пользователя)

+0

Вы можете иметь гораздо лучший подход, чем жесткое кодирование этих изображений , –

7

Простые базовые библиотеки .Net. Вы можете изменить его в соответствии с вашим требованием. Основная цель - создать профиль пользователя Аватар, если пользователь не использует определенное изображение для профиля по умолчанию, будет использоваться. Два обычных типа изображений, которые нам нужно сделать Прямоугольник & Круг.

Для Круга изображения

public MemoryStream GenerateCircle(string firstName, string lastName) 
    { 
     var avatarString = string.Format("{0}{1}", firstName[0], lastName[0]).ToUpper(); 

     var randomIndex = new Random().Next(0, _BackgroundColours.Count - 1); 
     var bgColour = _BackgroundColours[randomIndex]; 

     var bmp = new Bitmap(192, 192); 
     var sf = new StringFormat(); 
     sf.Alignment = StringAlignment.Center; 
     sf.LineAlignment = StringAlignment.Center; 

     var font = new Font("Arial", 72, FontStyle.Bold, GraphicsUnit.Pixel); 
     var graphics = Graphics.FromImage(bmp); 

     graphics.Clear(Color.Transparent); 
     graphics.SmoothingMode = SmoothingMode.AntiAlias; 
     graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; 
     using (Brush b = new SolidBrush(ColorTranslator.FromHtml("#" + bgColour))) 
     { 
      graphics.FillEllipse(b, new Rectangle(0, 0, 192, 192)); 
     } 
     graphics.DrawString(avatarString, font, new SolidBrush(Color.WhiteSmoke), 95, 100, sf); 
     graphics.Flush(); 

     var ms = new MemoryStream(); 
     bmp.Save(ms, ImageFormat.Png); 
     return ms; 
    } 

Для Прямоугольник изображения:

public MemoryStream GenerateRactangle(string firstName, string lastName) 
    { 
     var avatarString = string.Format("{0}{1}", firstName[0], lastName[0]).ToUpper(); 

     var randomIndex = new Random().Next(0, _BackgroundColours.Count - 1); 
     var bgColour = _BackgroundColours[randomIndex]; 

     var bmp = new Bitmap(192, 192); 
     var sf = new StringFormat(); 
     sf.Alignment = StringAlignment.Center; 
     sf.LineAlignment = StringAlignment.Center; 

     var font = new Font("Arial", 72, FontStyle.Bold, GraphicsUnit.Pixel); 
     var graphics = Graphics.FromImage(bmp); 

     graphics.Clear((Color)new ColorConverter().ConvertFromString("#" + bgColour)); 
     graphics.SmoothingMode = SmoothingMode.AntiAlias; 
     graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; 
     graphics.DrawString(avatarString, font, new SolidBrush(Color.WhiteSmoke), new RectangleF(0, 0, 192, 192), sf); 

     graphics.Flush(); 

     var ms = new MemoryStream(); 
     bmp.Save(ms, ImageFormat.Png); 

     return ms; 
    } 

Для создания фона случайных цветов можно использовать:

private List<string> _BackgroundColours = new List<string> { "339966", "3366CC", "CC33FF", "FF5050" }; 

я надеюсь, что это поможет вашим, пожалуйста, передайте ваши предложения по его улучшению.