Package gift provides a set of useful image processing filters.
Pure Go. No external dependencies outside of the Go standard library.
go get -u github.com/disintegration/gift
http://godoc.org/github.com/disintegration/gift
// 1. Create a new GIFT and add some filters:
g := gift.New(
gift.Resize(800, 0, gift.LanczosResampling),
gift.UnsharpMask(1.0, 1.0, 0.0),
)
// 2. Create a new image of the corresponding size.
// dst is a new target image, src is the original image
dst := image.NewRGBA(g.Bounds(src.Bounds()))
// 3. Use Draw func to apply the filters to src and store the result in dst:
g.Draw(dst, src)
-
Transformations
- Crop(rect image.Rectangle)
- FlipHorizontal()
- FlipVertical()
- Resize(width, height int, resampling Resampling)
- Rotate(angle float32, backgroundColor color.Color, interpolation Interpolation)
- Rotate180()
- Rotate270()
- Rotate90()
- Transpose()
- Transverse()
-
Adjustments & effects
- 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)
- Saturation(percentage float32)
- Sepia(percentage float32)
- Sigmoid(midpoint, factor float32)
- UnsharpMask(sigma, amount, thresold float32)
gift.Resize(200, 0, gift.LanczosResampling)
Original image | Filtered image |
---|---|
gift.Resize(200, 0, gift.LinearResampling)
Original image | Filtered image |
---|---|
gift.Crop(image.Rect(90, 90, 250, 250))
Original image | Filtered image |
---|---|
gift.Rotate90()
Original image | Filtered image |
---|---|
gift.Rotate180()
Original image | Filtered image |
---|---|
gift.Rotate270()
Original image | Filtered image |
---|---|
gift.Rotate(30, color.White, gift.CubicInterpolation)
Original image | Filtered image |
---|---|
gift.FlipHorizontal()
Original image | Filtered image |
---|---|
gift.FlipVertical()
Original image | Filtered image |
---|---|
gift.Transpose()
Original image | Filtered image |
---|---|
gift.Transverse()
Original image | Filtered image |
---|---|
gift.Contrast(30)
Original image | Filtered image |
---|---|
gift.Contrast(-30)
Original image | Filtered image |
---|---|
gift.Brightness(30)
Original image | Filtered image |
---|---|
gift.Brightness(-30)
Original image | Filtered image |
---|---|
gift.Saturation(50)
Original image | Filtered image |
---|---|
gift.Saturation(-50)
Original image | Filtered image |
---|---|
gift.Hue(45)
Original image | Filtered image |
---|---|
gift.Hue(-45)
Original image | Filtered image |
---|---|
gift.Sigmoid(0.5, 5.0)
Original image | Filtered image |
---|---|
gift.Gamma(0.5)
Original image | Filtered image |
---|---|
gift.Gamma(1.5)
Original image | Filtered image |
---|---|
gift.GaussianBlur(1.0)
Original image | Filtered image |
---|---|
gift.UnsharpMask(1.0, 1.5, 0.0)
Original image | Filtered image |
---|---|
gift.Grayscale()
Original image | Filtered image |
---|---|
gift.Sepia(100)
Original image | Filtered image |
---|---|
gift.Invert()
Original image | Filtered image |
---|---|
gift.Colorize(240, 50, 100)
Original image | Filtered image |
---|---|
gift.ColorBalance(20, -20, 0)
Original image | Filtered image |
---|---|
gift.ColorFunc(
func(r0, g0, b0, a0 float32) (r, g, b, a float32) {
r = 1 - r0 // invert the red channel
g = g0 + 0.1 // shift the green channel by 0.1
b = 0 // set the blue channel to 0
a = a0 // preserve the alpha channel
return
},
)
Original image | Filtered image |
---|---|
gift.Mean(5, true)
Original image | Filtered image |
---|---|
gift.Median(5, true)
Original image | Filtered image |
---|---|
gift.Minimum(5, true)
Original image | Filtered image |
---|---|
gift.Maximum(5, true)
Original image | Filtered image |
---|---|
gift.Convolution(
[]float32{
-1, -1, 0,
-1, 1, 1,
0, 1, 1,
},
false, false, false, 0.0,
)
Original image | Filtered image |
---|---|
gift.Convolution(
[]float32{
-1, -1, -1,
-1, 8, -1,
-1, -1, -1,
},
false, false, false, 0.0,
)
Original image | Filtered image |
---|---|