Golang:letteravatar生成文字头像

Letter avatar generation for Go.

译文:Go语言的字母头像生成工具

文档:

安装

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

猜你喜欢

转载自blog.csdn.net/mouday/article/details/127277223