zoukankan      html  css  js  c++  java
  • 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:QLTestCore3_SolutionCore3Test1Core3Test1inDebug1.jpg");
                ImageHelper.SaveNameImage("李四", @"D:QLTestCore3_SolutionCore3Test1Core3Test1inDebug2.jpg");
                ImageHelper.SaveNameImage("王五", @"D:QLTestCore3_SolutionCore3Test1Core3Test1inDebug3.jpg");
                ImageHelper.SaveNameImage("1234", @"D:QLTestCore3_SolutionCore3Test1Core3Test1inDebug4.jpg");
                ImageHelper.SaveNameImage("a", @"D:QLTestCore3_SolutionCore3Test1Core3Test1inDebug5.jpg");
                ImageHelper.SaveNameImage("b", @"D:QLTestCore3_SolutionCore3Test1Core3Test1inDebug6.jpg");
            }

    更多:

    GDI+ DrawString字间距处理

    使用GDI+ 处理图片成圆图

    C#生成验证码实例  

  • 相关阅读:
    正则表达式教程
    LINQ查询基本操作
    C# LINQ 基本操作实例
    Sublime Text 3 常用插件以及安装方法
    记一次矩阵列单元格合并和拆分组件的开发
    解析JavaScript函数的多种写法
    jQuery源码逐行分析学习02(第一部分:jQuery的一些变量和函数)
    jQuery源码逐行分析学习01(jQuery的框架结构简化)
    Vue IIS 403-Forbidden
    数组求和:二分递归
  • 原文地址:https://www.cnblogs.com/tianma3798/p/13746340.html
Copyright © 2011-2022 走看看