您当前的位置: 首页 >  ar

彭世瑜

暂无认证

  • 3浏览

    0关注

    2791博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Golang:letteravatar生成文字头像

彭世瑜 发布时间:2022-10-12 10:20:38 ,浏览量:3

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

关注
打赏
1665367115
查看更多评论
立即登录/注册

微信扫码登录

0.0509s