Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >golang——image库图片上写字

golang——image库图片上写字

作者头像
码缘
发布于 2021-04-28 03:18:15
发布于 2021-04-28 03:18:15
2.4K10
代码可运行
举报
文章被收录于专栏:PHP修行之路PHP修行之路
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import (
	"github.com/golang/freetype"
	"image"
	"image/color"
	"image/png"
	"io/ioutil"
	"log"
	"os"
)

func main() {
	//图片的宽度
	srcWidth := 200
	//图片的高度
	srcHeight := 200
	imgfile, _ := os.Create("out.png")
	defer imgfile.Close()

	img := image.NewRGBA(image.Rect(0, 0, srcWidth, srcHeight))

	//为背景图片设置颜色
	for y := 0; y < srcWidth; y++ {
		for x := 0; x < srcHeight; x++ {
			img.Set(x, y, color.RGBA{255, 255, 255, 255})
		}
	}

	//读取字体数据  http://fonts.mobanwang.com/201503/12436.html
	fontBytes, err := ioutil.ReadFile("./public/xiawucha.ttf")
	if err != nil {
		log.Println(err)
	}
	//载入字体数据
	font, err := freetype.ParseFont(fontBytes)
	if err != nil {
		log.Println("载入字体失败", err)
	}
	f := freetype.NewContext()
	//设置分辨率
	f.SetDPI(100)
	//设置字体
	f.SetFont(font)
	//设置尺寸
	f.SetFontSize(26)
	f.SetClip(img.Bounds())
	//设置输出的图片
	f.SetDst(img)
	//设置字体颜色(红色)
	f.SetSrc(image.NewUniform(color.RGBA{255, 0, 0, 255}))

	//设置字体的位置
	pt := freetype.Pt(20, 40)

	_, err = f.DrawString("hello,你好", pt)
	if err != nil {
		log.Fatal(err)
	}

	//以png 格式写入文件
	err = png.Encode(imgfile, img)
	if err != nil {
		log.Fatal(err)
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
不好使,freetype: unsupported TrueType feature: cmap encoding
不好使,freetype: unsupported TrueType feature: cmap encoding
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
「Go工具箱」想用生成文字头像,推荐这个工具:letteravatar
大家好,我是渔夫子。本号新推出「Go工具箱」系列,意在给大家分享使用go语言编写的、实用的、好玩的工具。
Go学堂
2023/01/31
6360
go给图片添加文字
import ( "flag" "image" "image/draw" "image/jpeg" "io/ioutil" "log" "os" "github.com/golang/freetype" "golang.org/x/image/font" ) var ( dpi = flag.Float64("dpi", 72, "screen resolution in Dots Per Inch") fontfile = flag.String("fontfile", "luxisr.ttf", "filename of the ttf font") hinting = flag.String("hinting", "none", "none | full") size = flag.Float64("size", 12, "font size in points") spacing = flag.Float64("spacing", 1.5, "line spacing (e.g. 2 means double spaced)") wonb = flag.Bool("whiteonblack", false, "white text on a black background") ) var text = []string{ "33333333333333333", } func main() { flag.Parse() //读取字体 fontBytes, err := ioutil.ReadFile(*fontfile) if err != nil { log.Println(err) return } //解析字体 f, err := freetype.ParseFont(fontBytes) if err != nil { log.Println(err) return } // 初始化图片背景 fg := image.Black if *wonb { fg = image.White } //初始化一张图片,生成原图 imgB, _ := os.Open("a.jpg") img, _ := jpeg.Decode(imgB) defer imgB.Close() b := img.Bounds() rgba := image.NewNRGBA(b) draw.Draw(rgba, rgba.Bounds(), img, image.ZP, draw.Src) //在图片上面添加文字 c := freetype.NewContext() c.SetDPI(*dpi) //设置字体 c.SetFont(f) //设置大小 c.SetFontSize(*size) //设置边界 c.SetClip(rgba.Bounds()) //设置背景底图 c.SetDst(rgba) //设置背景图 c.SetSrc(fg) //设置提示 switch *hinting { default: c.SetHinting(font.HintingNone) case "full": c.SetHinting(font.HintingFull) } // 画文字 pt := freetype.Pt(10, 10+int(c.PointToFixed(*size)>>6)) for _, s := range text { _, err = c.DrawString(s, pt) if err != nil { log.Println(err) return } pt.Y += c.PointToFixed(*size * *spacing) } imgw, _ := os.Create("out.jpg") jpeg.Encode(imgw, rgba, &jpeg.Options{100}) defer imgw.Close() }
公众号-利志分享
2022/04/25
5.3K0
Golang 图片上绘制文字
package main import ( "bufio" "flag" "fmt" "image" "image/color" "image/draw" "image/png" "io/ioutil" "log" "os" "github.com/golang/freetype" "golang.org/x/image/font" ) var ( dpi = flag
李海彬
2018/03/20
7.8K1
厚土Go学习笔记 | 37. 图片(image)生成器
图片的操控有点复杂。Image类型有一些必要的方法必须实现。而 Image 本身也要构建一个最简单的结构体,包含图片的宽和高。 我们实现一个给定了大小的图片,然后把这个图片输出。 图片基本的结构和方法 type Image struct{ width int height int } func (img Image) ColorModel() color.Model { return color.RGBAModel } func (img Image) Bounds() ima
李海彬
2018/03/19
9750
厚土Go学习笔记 | 37. 图片(image)生成器
Golang-实现图片缩放
package main import ( "fmt" "graphics" "image" "image/png" "log" "net/http" "os" "strconv" "strings" ) func main() { http.HandleFunc("/", doImageHandler) http.ListenAndServe("127.0.0.1:6789", nil) } func doImag
李海彬
2018/03/20
3.8K0
Golang中image/jpeg包和image/png包用法
jpeg包实现了jpeg图片的编码和解码 func Decode(r io.Reader) (image.Image, error) //Decode读取一个jpeg文件,并将他作为image.Image返回 func DecodeConfig(r io.Reader) (image.Config, error) //无需解码整个图像,DecodeConfig变能够返回整个图像的尺寸和颜色(Config具体定义查看gif包中的定义) func Encode(w io.Writer, m image.
李海彬
2018/03/20
3.9K0
Golang中image/jpeg包和image/png包用法
Go每日一库之120:image(标准库图形处理)
在开发中,有时会遇到对图片的处理需求,在 Python中, PIL/Pillow 库非常强大和易用。 而 Golang 语言中,处理图片的标准库 image也可以实现一些基本操作。 image 库支持常见的 PNG、JPEG、GIF 等格式的图片处理, 可以对图片进行读取、裁剪、绘制、生成等操作。
luckpunk
2023/09/30
2.5K0
image
---- image/gif 包的用法总结 要制作一个gif动画文件总共分两步 第一步 创建gif结构体实例,设置相关属性 type GIF struct { Image []*image.Paletted // 将每一帧的image实例放入这个数组 Delay []int // 将每一帧对应的延时时间放入这个数组 LoopCount int // gif动画循环的次数 Disposal []byte Config image.Config Back
酷走天涯
2019/05/26
1.2K0
3 分钟带你通过 Go 生成宣传海报!
对于公网应用来说,海报功能是非常非常重要的,它不仅能扩大应用的知名度,还能起到营销的作用。
小锟哥哥
2022/12/05
1.5K0
3 分钟带你通过 Go 生成宣传海报!
golang标准库——image
使用golang标准库中的 image 库合成图片 package main import ( "fmt" "image" "image/draw" _ "image/jpeg" "image/png" "os" ) func main() { file,err := os.Open("./public/1.jpg") if err != nil{ fmt.Println(err) } img,_,imgErr := image.Decode(file) if imgErr
码缘
2021/04/27
6810
golang标准库——image
Go 每日一库之 plot
本文介绍 Go 语言的一个非常强大、好用的绘图库——plot。plot内置了很多常用的组件,基本满足日常需求。同时,它也提供了定制化的接口,可以实现我们的个性化需求。plot主要用于将数据可视化,便于我们观察、比较。
用户7731323
2020/09/08
1.4K0
2011年09月29日 Go生态洞察:image/draw包的深度解析
🐯 在这里,猫头虎博主带你深入探索Go语言中的神秘之处。今日话题,我们将围绕Go的image/draw包展开深入讨论。无论你是图像处理的新手还是老手,这篇文章都会带你领略其简约而不简单的魅力。一起来探索它如何用一种操作,解锁多种图像处理技能的大门吧!
猫头虎
2024/04/09
910
2011年09月29日 Go生态洞察:image/draw包的深度解析
Go语言入门(八)线程安全&锁
线程安全&锁 定时器&一次性定时器 定时器 func main() { ticker := time.NewTicker(time.Second) //ticker.C是一个只读的chan,所以直接可以使用for range读取 for v := range ticker.C { fmt.Printf("hello %v\n",v) //按秒输出 } } 一次性定时器 func main() { select { case <- time.After(ti
alexhuiwang
2020/09/24
3850
go语言实现将重要数据写入图片中
原理:将数据的二进制形式写入图像红色通道数据二进制的低位 只支持png格式的输出 写入数据 go run shadow.go -in="c.jpg" -data="hide me" -out="out.png" 读取数据 go run shadow.go -in="out.png" package main import ( "errors" "flag" "fmt" "image" "image/color" _ "image/jpeg" "ima
李海彬
2018/03/26
1.2K0
一起用Go做一个小游戏(上)
最近偶然看到一个Go语言库,口号喊出“一个超级简单(dead simple)的2D游戏引擎”,好奇点开了它的官网。
用户7731323
2023/02/14
1.1K0
一起用Go做一个小游戏(上)
JavaUtil_03_图片处理工具类
 一、源码 功能:缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等 package com.ray.dingtalk.util; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Toolkit; i
shirayner
2018/08/10
9900
Go每日一库之171:go-qrcode
使用Go语言编程时,生成任意内容的二维码是非常方便的,可以使用 go-qrcode 这个库快速生成二维码。大家可以从 github 上(https://github.com/skip2/go-qrcode)下载并使用这个库。要是下载不下来的挂个代理就可。 上代码
luckpunk
2023/09/30
6121
Go每日一库之171:go-qrcode
[日常] Go语言圣经-WEB服务与习题
2.main函数将所有发送到/路径下的请求和handler函数关联起来,/开头的请求其实就是所有发送到当前站点上的请求,服务监听8000端口
唯一Chat
2019/09/10
7100
[日常] Go语言圣经-WEB服务与习题
golang小工具download公众号文章或其他网页图片
直接运行main.go文件或者通过go build ./打成windows下的exe包或者在linux下打成downloadPic包直接运行
山行AI
2019/11/21
1.4K0
golang小工具download公众号文章或其他网页图片
分享一波GO的爬虫
想看看如何使用 GOLANG 发送邮件的,欢迎查看文章如何使用 GOLANG 发送邮件
阿兵云原生
2023/02/16
7520
相关推荐
「Go工具箱」想用生成文字头像,推荐这个工具:letteravatar
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验