gpt4 book ai didi

Golang 如何从矩形 jpeg 裁剪圆形图像。

转载 作者:IT王子 更新时间:2023-10-29 00:59:13 34 4
gpt4 key购买 nike

在 Golang 中,如何从矩形 jpeg 裁剪出圆形图像。矩形的大小可以变化。如果你有一个 image.Image 你会从图像的中心裁剪出一个圆圈,该圆圈占据尽可能多的空间吗?我想保留圆圈并删除其余部分。

最佳答案

这个例子使用了golang博客的绘图包,应该可以大致达到你的要求;

type circle struct {
p image.Point
r int
}

func (c *circle) ColorModel() color.Model {
return color.AlphaModel
}

func (c *circle) Bounds() image.Rectangle {
return image.Rect(c.p.X-c.r, c.p.Y-c.r, c.p.X+c.r, c.p.Y+c.r)
}

func (c *circle) At(x, y int) color.Color {
xx, yy, rr := float64(x-c.p.X)+0.5, float64(y-c.p.Y)+0.5, float64(c.r)
if xx*xx+yy*yy < rr*rr {
return color.Alpha{255}
}
return color.Alpha{0}
}

draw.DrawMask(dst, dst.Bounds(), src, image.ZP, &circle{p, r}, image.ZP, draw.Over)

请注意,它采用一个矩形并遮盖除从点 p 开始且半径为 r 的圆以外的所有内容。完整文章可以在这里找到 http://blog.golang.org/go-imagedraw-package

在您的情况下,您希望蒙版只是您的正常背景,而 src 是您想要使用的当前矩形图像的一部分。

关于Golang 如何从矩形 jpeg 裁剪圆形图像。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32213093/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com