Letter avatar generation 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)
参考 「Go工具箱」想用生成文字头像,推荐这个工具:letteravatar