Golang:letteravatar生成文字头像

简介: Golang:letteravatar生成文字头像

Letter avatargeneration 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)
}

生成的图像如下

image.png

绘制中文头像

先下载一个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)
  }
}

输出

image.png

补充:字体的基本知识点

FreeType字体引擎

TrueType字体

  • 点阵:保存每个点的渲染信息
  • 矢量:保存字的绘制公式

字体文件

  • .ttf TrueType字体
  • .ttc 多个ttf的集合文件(collection)

参考

「Go工具箱」想用生成文字头像,推荐这个工具:letteravatar


相关文章
|
3月前
|
Go 开发者
|
6月前
|
Go
golang力扣leetcode 剑指Offer II 114. 外星文字典
golang力扣leetcode 剑指Offer II 114. 外星文字典
50 0
|
Go API Windows
Golang:color在终端上输出带颜色的文字
Golang:color在终端上输出带颜色的文字
190 0
Golang:color在终端上输出带颜色的文字
|
2月前
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
116 4
Golang语言之管道channel快速入门篇
|
2月前
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
67 4
Golang语言文件操作快速入门篇
|
2月前
|
Go
Golang语言之gRPC程序设计示例
这篇文章是关于Golang语言使用gRPC进行程序设计的详细教程,涵盖了RPC协议的介绍、gRPC环境的搭建、Protocol Buffers的使用、gRPC服务的编写和通信示例。
104 3
Golang语言之gRPC程序设计示例
|
2月前
|
安全 Go
Golang语言goroutine协程并发安全及锁机制
这篇文章是关于Go语言中多协程操作同一数据问题、互斥锁Mutex和读写互斥锁RWMutex的详细介绍及使用案例,涵盖了如何使用这些同步原语来解决并发访问共享资源时的数据安全问题。
86 4
|
2月前
|
Go
Golang语言错误处理机制
这篇文章是关于Golang语言错误处理机制的教程,介绍了使用defer结合recover捕获错误、基于errors.New自定义错误以及使用panic抛出自定义错误的方法。
49 3
|
2月前
|
Go 调度
Golang语言goroutine协程篇
这篇文章是关于Go语言goroutine协程的详细教程,涵盖了并发编程的常见术语、goroutine的创建和调度、使用sync.WaitGroup控制协程退出以及如何通过GOMAXPROCS设置程序并发时占用的CPU逻辑核心数。
53 4
Golang语言goroutine协程篇
|
2月前
|
Prometheus Cloud Native Go
Golang语言之Prometheus的日志模块使用案例
这篇文章是关于如何在Golang语言项目中使用Prometheus的日志模块的案例,包括源代码编写、编译和测试步骤。
55 3
Golang语言之Prometheus的日志模块使用案例