• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Golang 使用FreeType-go进行字体

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

     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: }

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go语言学习之Go协程:信道发布时间:2022-07-10
下一篇:
2.Go语言-运算符发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap