将默认用户个人资料图片设置为其首字母的图像

越来越多我看到公司设置用户的默认个人资料图片,如下面的截图所示,该截图来自Google主页…

在此处输入图像描述

谷歌如何实现这一目标? PHP和C#的哪些API可用于实现此目的?

简单使用.Net基本库。 您可以根据自己的要求进行更改。 基本目的是创建用户配置文件头像图像,如果用户不使用特定图像的配置文件默认图像将被使用。 我们需要制作两种常见类型的图像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; } 

对于矩形图像:

 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 _BackgroundColours = new List { "339966", "3366CC", "CC33FF", "FF5050" }; 

我希望它会对您有所帮助,请通过您的建议来改进它。

您可以为每个字母保存一个图像

 /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存储用户的数据)