最近需要为用户服务添加一些新功能,其中就包括在注册时根据用户昵称生成头像这一点。

由于用户服务是用golang写的,google来google去都只找到freetype一个比较简单好用的库,其他比如ImageMagicK之类api都过于低层不适合我们这样相对简单的图片生成需求。

那说干就干,在go freetype仓库里找了个 example 就开始撸。

首先将又长又臭的这个example重新组织为几个函数,再按照我的需求修改一些参数……(想知道重构后的代码时什么样的话,请直接下拉,查看我封装的类库仓库地址。)

撸了一下午之后得到了我想要的结果,先贴两张图给大伙瞧瞧。

(数字)

(英文)

(汉字)

由于这个小功能挺有意思,觉得以后会用到所以把它稍微封装了一下放到了仓库里——AvatarBuilder,点我访问。

用法

首先安装:

go get -u github.com/ShiningRush/avatarbuilder

然后使用,代码片段如下(golang):

//init avatarbuilder, you need to tell builder ttf file and how to alignment text

ab := avatarbuilder.NewAvatarBuilder("./SourceHanSansSC-Medium.ttf", &calc.SourceHansSansSCMedium{})

ab.SetBackgroundColorHex(colors[1])

ab.SetFrontgroundColor(color.White)

ab.SetFontSize(80)

ab.SetAvatarSize(200, 200)if err := ab.GenerateImageAndSave("12", "./out.png"); err !=nil {

fmt.Println(err)return}

完整的例子可以在仓库的example里看到:点击查看。

你可以按照你的需求设置头像的宽高以及字体大小和字体文件,需要注意的是,目前该库只实现了一个免费开源的字体文件——思源。

因为每个字体文件的宽高都有点差异,所以当你引入新的字体时也需要拓展一个新的算法来告诉如何生成居中的文字。

可以参考 calc 文件夹下的实现。

以上,希望对以后有相同需求的同学有帮助。

(很遗憾,最近在写go和python比较多,所以没有c#的实现版本,幸运的是,c#在图形处理方面的库本就不少,资料很全完全不用操心。)

java根据名称生成头像_教你用go freetype根据用户昵称生成头像相关推荐

  1. 用python做头像_教你用python下载和拼接微信好友头像图片

    相信微信大家是用得再多也不过了.那么,对于python+微信,又能玩出什么新的花样呢?下面就给大家带来一个好玩的东西.用python下载所有的微信好友的头像,然后拼接成一张大图.这样,大家就可以转载到 ...

  2. java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题

    在作业中,项目使用文件上传. 这个功能很常见. 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件. 它是怎么发生的? 经过许多问题之后,事实证明这 ...

  3. Java获取游戏头像_小程序最新获取用户昵称和头像的方法总结

    前段时间微信小程序对获取用户昵称和头像方法进行了更新,网上很多的文章都已经不适用了,这里简单总结一下 首先,传统接口wx.getUserInfo的效果会弹出一个给用户的弹窗,需要用户授权,经过测试传统 ...

  4. Python: 生成带用户昵称的头像

    Python: 生成带用户昵称的头像 需求 新建用户后,根据用户输入的昵称生成图片.(例:注册"钉钉"用户后,头像根据输入的名字生成) 开发环境 Windows 10 Python ...

  5. 融云--如何显示用户昵称和头像的

    融云认为,每一个设计良好且功能健全的 App 都应该能够在本地获取.缓存并更新用户信息.所以,融云不维护用户基本信息(用户 Id.昵称.头像).此外,App 提供用户信息也避免了由于缓存导致的用户信息 ...

  6. php 获取qq头像,免费的API接口推荐(获取QQ昵称、头像、QQ秀等等)

    1.获取QQ头像 http://q2.qlogo.cn/headimg_dl?dst_uin=QQ号码&spec=100 100 是尺寸,具体可以参考下表 还有其他尺寸为,40 x 40.10 ...

  7. 微信小程序——最新获取用户昵称和头像的方法总结

    前段时间微信小程序对获取用户昵称和头像方法进行了更新,网上很多的文章都已经不适用了,这里简单总结一下 首先,传统接口wx.getUserInfo的效果会弹出一个给用户的弹窗,需要用户授权,经过测试传统 ...

  8. 使用python 处理表格生成图表_教你用Python自动读取数据生成图表,产生的效益很可观...

    厌烦了每次都要在Excel里拖动数据来生成图形吧,这篇文章里,教你用Python自动读取Excel数据生成图表,然后Python 使用XlsxWriter模块在Excel工作表中绘制带有数据表的柱形图 ...

  9. python批量生成图表_教你用Python自动读取数据生成图表,产生的效益很可观

    厌烦了每次都要在Excel里拖动数据来生成图形吧,这篇文章里,教你用Python自动读取Excel数据生成图表,然后Python 使用XlsxWriter模块在Excel工作表中绘制带有数据表的柱形图 ...

最新文章

  1. java两个日期之间的日期_获取两个日期之间的日期形成一个集合
  2. Dubbo 源码分析 - 集群容错之 LoadBalance
  3. python中的matplotlib.pyplot_python matplotlib中axes与axis的区别?
  4. 给asterisk写app供CLI调用
  5. IdentityServer4-客户端的授权模式原理分析(三)
  6. mysql 开启远程访问_QxOrm 访问 MySQL
  7. 风险策略中的五层决策
  8. 在win10环境中安装xilinx vivado IDE时出现的问题及解决方法
  9. 让APP不被android系统杀掉
  10. /usr/include/openssl/des.h:91:9: error: unknown type name ‘DES_LONG’ DES_LONG deslong[2];
  11. mflac格式解密_如何解密QQ音乐的MFLAC和MGG格式
  12. 桌面改成d盘如何改回去 修改注册表可以如何生效
  13. 爱五笔iWuBi for mac(好用的五笔学习软件)
  14. Excel中怎么添加批注
  15. [STM32F429IGT6]-TIM ETR 计数
  16. 认知层次不同的人,是很难沟通的
  17. Linux 创建MBR的磁盘的扩展分区、逻辑分区相关问题(parted)
  18. 团购网站的现状和未来
  19. 一、ShardingSphere简介(来自官方文档)
  20. Python之pdb代码调试

热门文章

  1. 图片加载的框架——glid
  2. PyQt5 Designer中ui格式转py格式
  3. adb不是内部命令或外部命令,也不是可运行的程序或批处...
  4. 浏览器是如何工作的 - How Browser works
  5. 计算机毕业设计Java大型商场应急预案管理系统(源码+系统+mysql数据库+lw文档)
  6. matlab计算栅格数据逐像元趋势,基于Matlab的栅格数据一元线性回归及显著性检验(slope趋势分析)...
  7. juniper SRX防火墙NAT 专题
  8. 湖北摧毁中国规模最大黑客培训网
  9. AudVidder(音频视频转换器)v1.0.0.4版本更新
  10. json ajax 不缓存,Jsonify数据不返回ajax