一、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#生成验证码实例

C# 实现中文转颜色 - 实现根据名字自动生成头像的更多相关文章

  1. C代码工具--自动生成enum值和名字映射代码

    这年头好像继续做C语言的人不多了,年轻人大多去互联网和移动应用.确实,那两个领域现在来钱快,且总是供不应求.就说刚刚在一个旧同事的微信群里,有人刚放出自己有团队可以做App几分钟,哇塞,好几个人说有项 ...

  2. vs2017更新后web项目部分后台代码类没有颜色,也没有自动提示输入功能

    vs2017有的版本更新后默认.net framework框架是.net framework4.6.1,将项目的.net framework框架更改为4.6.1,颜色和自动提示出现

  3. Color Highlight 鼠标放在 #f3f 上面其背景会变成相应的颜色的插件 DocBlockr自动补全注释

    不是  Color Highlighter    而是 Color Highlight  少了 er  颜色功能还是很爽的,找了好久 鼠标放在 #f3f 上面其背景会变成相应的颜色的插件 DocBlo ...

  4. Lua 读表代码,自动生成字段名字

    表格格式为 INT STRING INT INT INT INT INT Id Desc Type SceneId OpenId MaxPliesp ClearancePlies 第1关 - 第2关 ...

  5. oracle字段由中文前缀加数字,数字自动增长的实现

    table中有一个字段,id,它是由Yunsha_000001的规则组成的. 每当插入一条数据的时候,自动生成的id是自动增加的,如何实现数字部分的自动增长? select  'Yunsha_'||l ...

  6. 什么是静态代码块?java中如何使用空参构造方法自动生成不同名字的对象,使用非静态的属性和静态属性有什么区别,原因是什么?如何理解static关键字

    静态代码块?类加载就执行,最先执行 class demo{ static int num; static{ num=10; num*=3; System.out.println("haha& ...

  7. java笔记整理

    Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...

  8. vim note

    2016-1-22 vim plugin collections: (参考 https://www.youtube.com/watch?v=0QFR-_wUoA0) vim-pathogen  插件管 ...

  9. VMD的相关命令(转载)

    转载自:http://blog.sina.com.cn/s/blog_b48a7ac30102w6xg.html 自我学习总结: 1.打开VMD main上Extensions中的TkConsole这 ...

  10. 最牛逼android上的图表库MpChart(一) 介绍篇

    最牛逼android上的图表库MpChart一 介绍篇 MpChart优点 MpChart是什么 MpChart支持哪些图表 MpChart效果如何 最牛逼android上的图表库MpChart(一) ...

随机推荐

  1. ArkUI框架,更懂程序员的UI信息语法

     原文:https://mp.weixin.qq.com/s/LQA6AYiG8O_AeGE1PZwxZg,点击链接查看更多技术内容.   ArkUI框架简化代码的"秘密" 在传统 ...

  2. Python2同时输出中文和变量时中文乱码

    Python2同时输出中文和变量时中文乱码 一.问题描述 最近在学习tensorflow时,突然发现一个问题,python2在输出中文和变量时会出现一点问题,如下图: 可以看到,输出并不是想要的结果, ...

  3. c# 优化代码的一些规则——什么情况下应该使用new[七]

    前言 new 在重构这本书中写道new就是坏代码的味道,说明使用new的情况并不多. 在这里我指的new 是方法修饰符,而不是指实例. 正文 看下new的作用: new 修饰符可以重新定义从基类继承下 ...

  4. mysql 重新整理——性能下降的原因[四]

    前言 什么是性能下降? 其实就是代码运行的环境变了,那么环境变化是什么? 比如cpu上升了,内存满了.有或者表中数量增加了,量变了. 其实这些是dba干的,但是呢,我们也需要去了解下,并且优化我们的c ...

  5. 重走py 之路 ——普通操作与函数(三)

    前言 本节主要介绍函数,但是函数是由操作组成的.那么就分为两部,一部分为操作一部分为函数. 正文 py世界中的操作. 操作 if: 在学习任何一门语言中,关系if,要关系另外一件事,那就是if是否只能 ...

  6. c# 模拟web请求formdata webrequest

    前言 在写代码中,我们常常需要去书写代码去请求一些东西,那么是不是可以模拟像web formdata一样请求. 正文 下面代码为模拟的: public string SendRequest(strin ...

  7. Java实现学生投票系统

    "感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友.您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!" 代码 im ...

  8. 蚂蚁一面:GC垃圾回收时,内存分配和回收策略有哪些?

    文章首发于公众号:腐烂的橘子 蚂蚁面试主要为电话面试,期间也会要求使用编辑器手写算法题.作为一线互联网大厂,Java 基础知识是必备的,其中垃圾回收也是面试过程中的重中之重. Java 内存的自动管理 ...

  9. 搭建Hadoop环境

    搭建Hadoop环境 一.虚拟机的安装 二. 安装JDK 1.下载jdk wget https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41- ...

  10. OpenSergo 正式开源,多家厂商共建微服务治理规范和实现

    ​简介 OpenSergo,Open 是开放的意思,Sergo 则是取了服务治理两个英文单词 Service Governance 的前部分字母 Ser 和 Go,合起来即是一个开放的服务治理项目. ...