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%