教你用go freetype根据用户昵称生成头像
最近需要为用户服务添加一些新功能,其中就包括在注册时根据用户昵称生成头像这一点。
由于用户服务是用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 textab := 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#在图形处理方面的库本就不少,资料很全完全不用操心。)
教你用go freetype根据用户昵称生成头像相关推荐
- java根据名称生成头像_教你用go freetype根据用户昵称生成头像
最近需要为用户服务添加一些新功能,其中就包括在注册时根据用户昵称生成头像这一点. 由于用户服务是用golang写的,google来google去都只找到freetype一个比较简单好用的库,其他比如I ...
- Python: 生成带用户昵称的头像
Python: 生成带用户昵称的头像 需求 新建用户后,根据用户输入的昵称生成图片.(例:注册"钉钉"用户后,头像根据输入的名字生成) 开发环境 Windows 10 Python ...
- 微信小程序——最新获取用户昵称和头像的方法总结
前段时间微信小程序对获取用户昵称和头像方法进行了更新,网上很多的文章都已经不适用了,这里简单总结一下 首先,传统接口wx.getUserInfo的效果会弹出一个给用户的弹窗,需要用户授权,经过测试传统 ...
- Java获取游戏头像_小程序最新获取用户昵称和头像的方法总结
前段时间微信小程序对获取用户昵称和头像方法进行了更新,网上很多的文章都已经不适用了,这里简单总结一下 首先,传统接口wx.getUserInfo的效果会弹出一个给用户的弹窗,需要用户授权,经过测试传统 ...
- 融云--如何显示用户昵称和头像的
融云认为,每一个设计良好且功能健全的 App 都应该能够在本地获取.缓存并更新用户信息.所以,融云不维护用户基本信息(用户 Id.昵称.头像).此外,App 提供用户信息也避免了由于缓存导致的用户信息 ...
- 【快速文档】open-data标签,在小程序中无需用户授权也可以使用用户昵称和头像
介绍 按照现在的规定,在小程序中使用任何有关于用户的个人信息,都是需要授权的.但是,如果是通过open-data来使用用户的信息的话,则无需用户授权. 为什么open-data不需要授权呢,因为ope ...
- 【uniapp,样式,登录】【微信小程序】获取用户昵称和头像 uni.getUserProfile 废弃 后 新规则 写法
uni.getUserProfile 已废弃 //授权获取用户信息 废弃getUserProfile(e) {console.log('授权登录')uni.showLoading({title: '加 ...
- 微信小程序获取用户昵称和头像
getUserInfo.js Page({data: {userInfo: {},hasUserInfo: false,canIUseGetUserProfile: false,},onLoad() ...
- 附解决方案,小程序获取的用户信息中昵称图然变成了“微信用户”,而且头像也显示不了?
以下解决方案来自51CTO博客作者编程小石头的原创作品 最近好多小伙伴在使用getUserInfo获取小程序用户昵称和头像时,图然变成了下面这样. 错误图示 很多小伙伴肯定就疑虑了,明明我代码没有做任 ...
- php qq昵称,自写与收集的一些免费的API接口(获取QQ昵称、头像、QQ秀等等...)...
1.获取QQ头像 http://q2.qlogo.cn/headimg_dl?dst_uin=QQ号码&spec=100 100 是尺寸,具体可以参考下表 还有其他尺寸为,40 x 40.10 ...
最新文章
- python_day26__02__文件的传送
- 启动服务错误5拒绝访问_【Go API 开发实战 5】基础1:启动一个最简单的 RESTful API 服务器...
- webpack简单修改版本号(单页面)
- Windows编程之网络之邮件槽通讯
- java虚拟_Java虚拟机(JVM)工作原理
- 基于jQuery实现自动或点击切换效果
- 实战爬虫:python爬虫学习笔记之爬取大前端网站
- 进销存excel_EXCEL也能连接扫码枪?商品扫码入库,免费进销存自由修改功能
- CentOS 7 新建桌面快捷方式,实现一键跳转到指定的文件夹路径
- RESTful API及其设计思想
- 申论(基础题)之应用文写作
- 在校园暴力中成长的孤僻少年,如何逆袭剑桥,成为一代科学大师
- c#延时函数,不止Sleep函数
- The road to learning English-Grammar
- 【认证/测试】产品的IP等级防水/防尘解析以及测试方法
- 第12节 实例-挖方填方量的计算
- C语言函数while的用法
- Flutter 视频播放器组件封装
- 国外主流广告联盟大推荐
- c9和北航计算机哪个好,哈工大是C9高校,北航是普通的985,为何北航的录取分数更高?...