C# 實現中文轉顏色 - 實現根據名字自動生成頭像


一、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");
        }

 

 

 

更多:

GDI+ DrawString字間距處理

使用GDI+ 處理圖片成圓圖

C#生成驗證碼實例  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM