Установите изображение профиля пользователя по умолчанию на изображение их инициалов

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

введите описание изображения здесь

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

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

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

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; } 

Для изображения Rectangle:

 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" }; 

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

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

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

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

Например…

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

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