一、C#實現中文轉顏色 - 實現根據名字自動生成頭像
原理說明:
由於名字圖像是自動生成,背景顏色不一樣,可以考慮一下幾種方法:
1)使用隨機數來自動生成一個16進制顏色字符串,作為頭像的背景顏色;
2)獲取名字的第一個字,轉換成16進制文字顏色字符串,作為頭像背景顏色;
注:推薦第二個方案,第二個的話,可以讓同一個姓的用戶,北京顏色相同。
代碼整理如下:
/// <summary> /// 常用圖片,操作方法整理 /// </summary> public class ImageHelper { #region 姓名生成圖片處理 /// <summary> /// 獲取姓名對應的顏色值 /// </summary> /// <param name="name"></param> /// <returns></returns> public static string GetNameColor(string name) { if (string.IsNullOrEmpty(name) || name.Length <= 0) throw new Exception("name不能為空"); //獲取名字第一個字,轉換成 16進制 圖片 string str = ""; foreach (var item in name) { str += Convert.ToUInt16(item); } if (str.Length < 4) { str += new Random().Next(100, 1000); } string color = "#" + str.Substring(1, 3); return color; } /// <summary> /// 獲取姓名對應的圖片 /// </summary> /// <param name="name"></param> /// <param name="width"></param> /// <param name="height"></param> /// <returns></returns> public static Bitmap GetNameImage(string name,int width=132,int height=132) { string color = GetNameColor(name); string firstName = name.Substring(0,1); Bitmap img = new Bitmap(width,height); Graphics g = Graphics.FromImage(img); Brush brush = new SolidBrush(ColorTranslator.FromHtml(color)); g.FillRectangle(brush,0,0,width,height); //填充文字 Font font = new Font("微軟雅黑", 50); SizeF firstSize= g.MeasureString(firstName,font); g.DrawString(firstName,font,Brushes.White,new PointF((img.Width - firstSize.Width)/2, (img.Height - firstSize.Height) / 2)); g.Dispose(); return img; } /// <summary> /// 保存圖片到磁盤 /// </summary> /// <param name="name"></param> /// <param name="targetFile"></param> /// <param name="width"></param> /// <param name="height"></param> /// <returns></returns> public static Bitmap SaveNameImage(string name, string targetFile, int width = 132, int height = 132) { Bitmap img = GetNameImage(name,width,height); img.Save(targetFile,Drawing.Imaging.ImageFormat.Jpeg); img.Dispose(); return img; } #endregion }
測試結果:
static void ImgTest2() { ImageHelper.SaveNameImage("張三豐", @"D:\QLTest\Core3_Solution\Core3Test1\Core3Test1\bin\Debug\1.jpg"); ImageHelper.SaveNameImage("李四", @"D:\QLTest\Core3_Solution\Core3Test1\Core3Test1\bin\Debug\2.jpg"); ImageHelper.SaveNameImage("王五", @"D:\QLTest\Core3_Solution\Core3Test1\Core3Test1\bin\Debug\3.jpg"); ImageHelper.SaveNameImage("1234", @"D:\QLTest\Core3_Solution\Core3Test1\Core3Test1\bin\Debug\4.jpg"); ImageHelper.SaveNameImage("a", @"D:\QLTest\Core3_Solution\Core3Test1\Core3Test1\bin\Debug\5.jpg"); ImageHelper.SaveNameImage("b", @"D:\QLTest\Core3_Solution\Core3Test1\Core3Test1\bin\Debug\6.jpg"); }
更多: