GiftGo 语言的图像过滤工具包

联合创作 · 2023-09-29 16:42

Gift 包提供一整套有用的图像处理过滤器。


完全使用 Go 语言,没有 Go 标准库之外的外部依赖。


安装/更新



go get -u github.com/disintegration/gift

文档


http://godoc.org/github.com/disintegration/gift


快速开始



// 1. 创建一个新的 GIFT 过滤器列表以及添加一些过滤器
g := gift.New(
    gift.Resize(800, 0, gift.LanczosResampling),
    gift.UnsharpMask(1.0, 1.0, 0.0),
)
// 2. 创建一个相应大小的新图像
// dst 是一个新的目标图像,src 是原始图像
dst := image.NewRGBA(g.Bounds(src.Bounds()))
// 3. 使用 Draw 函数将过滤器应用到 src 并将结果存储到 dst
g.Draw(dst, src)

用法


New 函数用于创建过滤器的序列:



g := gift.New(
    gift.Grayscale(),
    gift.Contrast(10),
)

过滤器也可以使用 Add 方法被添加:



g.Add(GaussianBlur(2))

Bounds 方法获取原始图像的界限并为目的图像返回相应的界限以适应结果(例如使用 Resize 或 Rotate 过滤器后)



dst := image.NewRGBA(g.Bounds(src.Bounds()))

支持的过滤器


转换



  • Crop(rect image.Rectangle)


  • CropToSize(width, height int, anchor Anchor)


  • FlipHorizontal()


  • FlipVertical()


  • Resize(width, height int, resampling Resampling)


  • ResizeToFill(width, height int, resampling Resampling, anchor Anchor)


  • ResizeToFit(width, height int, resampling Resampling)


  • Rotate(angle float32, backgroundColor color.Color, interpolation Interpolation)


  • Rotate180()


  • Rotate270()


  • Rotate90()


  • Transpose()


  • Transverse()



调整与效果



  • Brightness(percentage float32)


  • ColorBalance(percentageRed, percentageGreen, percentageBlue float32)


  • ColorFunc(fn func(r0, g0, b0, a0 float32) (r, g, b, a float32))


  • Colorize(hue, saturation, percentage float32)


  • ColorspaceLinearToSRGB()


  • ColorspaceSRGBToLinear()


  • Contrast(percentage float32)


  • Convolution(kernel []float32, normalize, alpha, abs bool, delta float32)


  • Gamma(gamma float32)


  • GaussianBlur(sigma float32)


  • Grayscale()


  • Hue(shift float32)


  • Invert()


  • Maximum(ksize int, disk bool)


  • Mean(ksize int, disk bool)


  • Median(ksize int, disk bool)


  • Minimum(ksize int, disk bool)


  • Pixelate(size int)


  • Saturation(percentage float32)


  • Sepia(percentage float32)


  • Sigmoid(midpoint, factor float32)


  • Sobel()


  • UnsharpMask(sigma, amount, thresold float32)

     



过滤器示例


调整之使用 lanczos 算法重新采样


原始图像



处理后图像



调整之使用线性算法重采样


原始图像



处理后图像



调整大小以适应 160x160 像素边框


原始图像



处理后图像



旋转 270 度


原始图像



处理后图像



水平翻转


原始图像



处理后图像



饱和度提高 50%


原始图像



处理后图像


浏览 17
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报