在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
FreeType库(http://www.freetype.org/)是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持单色位图、反走样位图的渲染。 freetype-go就是用go语言实现了FreeType驱动。它的项目地址: https://code.google.com/p/freetype-go 下面是使用它绘制的一个字体效果图: 相关代码: 1: package main
2:
3: import (
12: )
13:
const (
// 图片的大小 宽度
// 图片的大小 高度
// 需要使用的字体文件
// 字体尺寸
// 屏幕每英寸的分辨率
20: )
21:
22: func main() {
23:
// 需要保存的文件
25: imgcounter := 123
, imgcounter))
27: defer imgfile.Close()
28:
// 新建一个 指定大小的 RGBA位图
30: img := image.NewNRGBA(image.Rect(0, 0, dx, dy))
31:
// 画背景
for y := 0; y < dy; y++ {
for x := 0; x < dx; x++ {
// 设置某个点的颜色,依次是 RGBA
36: img.Set(x, y, color.RGBA{uint8(x), uint8(y), 0, 255})
37: }
38: }
39:
// 读字体数据
41: fontBytes, err := ioutil.ReadFile(fontFile)
if err != nil {
43: log.Println(err)
return
45: }
46: font, err := freetype.ParseFont(fontBytes)
if err != nil {
48: log.Println(err)
return
50: }
51:
52: c := freetype.NewContext()
53: c.SetDPI(fontDPI)
54: c.SetFont(font)
55: c.SetFontSize(fontSize)
56: c.SetClip(img.Bounds())
57: c.SetDst(img)
58: c.SetSrc(image.White)
59:
// 字出现的位置
61:
, pt)
if err != nil {
64: log.Println(err)
return
66: }
67:
// 以PNG格式保存文件
69: err = png.Encode(imgfile, img)
if err != nil {
71: log.Fatal(err)
72: }
73:
74: }
|
请发表评论