primitive/primitive/util.go
工具函数🔧
// main.go 使用
input, err := primitive.LoadImage(Input) // 加载图片
func LoadImage(path string) (image.Image, error) {
file, err := os.Open(path) // 开
if err != nil {
return nil, err
}
defer file.Close() // 函数结束, 文件关闭
im, _, err := image.Decode(file) // 转
return im, err
}
返回, 图片的平局颜色
// main.go 使用
bg = primitive.MakeColor(primitive.AverageImageColor(input))
- imageToRGBA
func AverageImageColor(im image.Image) color.NRGBA {
rgba := imageToRGBA(im)
size := rgba.Bounds().Size()
w, h := size.X, size.Y
var r, g, b int
for y := 0; y < h; y++ {
for x := 0; x < w; x++ {
c := rgba.RGBAAt(x, y)
r += int(c.R)
g += int(c.G)
b += int(c.B)
}
}
r /= w * h
g /= w * h
b /= w * h
return color.NRGBA{uint8(r), uint8(g), uint8(b), 255}
}
- color.NRGBA
// import
"image/color"
由图片变个颜色返回
func imageToRGBA(src image.Image) *image.RGBA {
dst := image.NewRGBA(src.Bounds())
draw.Draw(dst, dst.Rect, src, image.ZP, draw.Src)
return dst
}
- image.NewRGBA
// import
"image"
"image/draw"
试试
go run main.go img2rgba
原图片颜色, 再涂上 背景色
func uniformRGBA(r image.Rectangle, c color.Color) *image.RGBA {
im := image.NewRGBA(r)
draw.Draw(im, im.Bounds(), &image.Uniform{c}, image.ZP, draw.Src)
return im
}