Letter avatargeneration for Go.
译文:Go语言的字母头像生成工具
文档:
- https://github.com/disintegration/letteravatar
- https://pkg.go.dev/github.com/disintegration/letteravatar
安装
go get github.com/disintegration/letteravatar
示例
package main import ( "image/png" "os" "github.com/disintegration/letteravatar" ) func main() { // 生成一个100*100大小的以字母‘A’为图像的头像 img, _ := letteravatar.Draw(100, 'A', nil) file, _ := os.Create("A.png") png.Encode(file, img) }
生成的图像如下
绘制中文头像
先下载一个iconfont提供的字体,获得字体文件 Source_Han_Serif_CN_VF_Regular.ttf
https://www.iconfont.cn/fonts/index
示例
package main import ( "image/png" "log" "os" "unicode/utf8" "github.com/disintegration/letteravatar" "github.com/golang/freetype" ) func main() { // 指定中文字体参数 fontFile, _ := os.ReadFile("./Source_Han_Serif_CN_VF_Regular.ttf") font, _ := freetype.ParseFont(fontFile) options := &letteravatar.Options{ Font: font, } // 绘制文字 name := "国" firstLetter, _ := utf8.DecodeRuneInString(name) img, err := letteravatar.Draw(140, firstLetter, options) if err != nil { log.Fatal(err) } // 保存 file, err := os.Create(name + ".png") if err != nil { log.Fatal(err) } err = png.Encode(file, img) if err != nil { log.Fatal(err) } }
输出
补充:字体的基本知识点
FreeType字体引擎
TrueType字体
- 点阵:保存每个点的渲染信息
- 矢量:保存字的绘制公式
字体文件
- .ttf TrueType字体
- .ttc 多个ttf的集合文件(collection)
参考