GO IMAGE FILTERING TOOLKIT (GIFT)
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)
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)
Resize using lanczos resampling
gift .Resize (200 , 0 , gift .LanczosResampling )
Original image
Filtered image
Resize using linear resampling
gift .Resize (200 , 0 , gift .LinearResampling )
Original image
Filtered image
gift .Crop (image .Rect (90 , 90 , 250 , 250 ))
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Rotate 30 degrees, white background, cubic interpolation
gift .Rotate (30 , color .White , gift .CubicInterpolation )
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Unsharp mask, sigma=1.0, amount=1.5, thresold=0.0
gift .UnsharpMask (1.0 , 1.5 , 0.0 )
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Original image
Filtered image
Colorize, blue, saturation=100%
gift .Colorize (240 , 100 , 100 )
Original image
Filtered image
Color balance, +20% red, -20% green
gift .ColorBalance (20 , - 20 , 0 )
Original image
Filtered image
Local mean, disc shape, size=5
Original image
Filtered image
Local median, disc shape, size=5
Original image
Filtered image
Local minimum, disc shape, size=5
Original image
Filtered image
Local maximum, disc shape, size=5
Original image
Filtered image
Convolution matrix - Emboss
gift .Convolution (
[]float32 {
- 1 , - 1 , 0 ,
- 1 , 1 , 1 ,
0 , 1 , 1 ,
},
false , false , false , 0.0 ,
)
Original image
Filtered image
Convolution matrix - Edge detection
gift .Convolution (
[]float32 {
- 1 , - 1 , - 1 ,
- 1 , 8 , - 1 ,
- 1 , - 1 , - 1 ,
},
false , false , false , 0.0 ,
)
Original image
Filtered image