go中处理图片的标准库image支持常见的PNG、JPEG、GIF等格式的图片处理(可读取、裁剪、绘制、生成等)。
基本操作
图片的基本读取与保存。
读取
图片读取和文件读取类似,需要先获取流:
- 注册图片的解码器(如:jpg则
import _ "image/jpeg", png则import _ "image/png") - 通过
os.open打开文件获取流; - 通过
image.Decode解码流,获取图片;
import _ "image/jpeg"
func readPic() image.Image {
f, err := os.Open("C:\\hatAndSunglass.jpg")
if err != nil {
panic(err)
}
defer f.Close()
img, fmtName, err := image.Decode(f)
if err != nil {
panic(err)
}
fmt.Printf("Name: %v, Bounds: %+v, Color: %+v", fmtName, img.Bounds(), img.ColorModel())
return img
}
解码后返回的第一个参数为Image接口:
type Image interface {
ColorModel() color.Model // 返回图片的颜色模型
Bounds() Rectangle // 返回图片外框
At(x, y int) color.Color // 返回(x,y)像素点的颜色
}
新建
新建一个图片非常简单,只需image.NewRGBA即可创建一个透明背景的图片了
img := image.NewRGBA(image.Rect(0, 0, 300, 300))
保存
保存图片也很简单,需要编码后,写入文件流即可:
- 注册图片的解码器
- 通过
os.create创建文件; - 通过
png.Encode编码图片并写入文件;
func

本文详细介绍了在Go语言中处理图片的各种操作,包括读取、新建、保存图片,以及转换、裁剪和缩放等修改技巧。通过示例代码展示了如何使用标准库`image`进行图片处理,并引入`golang.org/x/image/draw`库实现高质量的缩放。此外,还讲解了如何将非RGBA格式的图片转换为RGBA以便进行进一步编辑。
最低0.47元/天 解锁文章
1597

被折叠的 条评论
为什么被折叠?



