2015-10-14 61 views
0

越來越多,我看到很多公司設置用戶的默認配置文件圖片,如下面的截圖是來自谷歌的主頁顯示的圖像...設置默認的用戶配置文件圖片,它們的縮寫

enter image description here

Google如何實現這一目標? 可以使用PHP和C#的哪些API來實現此目的?

+0

你放棄了嗎? –

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

我希望它會幫助你的,請繞道你的建議,以改善它。

相關問題