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.
INSTALLATION / UPDATING
go get -u github.com/disintegration/gift
DOCUMENTATION
http://godoc.org/github.com/disintegration/gift
QUICK START
// 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 )
SUPPORTED FILTERS
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)
FILTER EXAMPLES
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
Crop 90, 90 - 250, 250
gift .Crop (image .Rect (90 , 90 , 250 , 250 ))
Original image
Filtered image
Rotate 90 degrees
Original image
Filtered image
Rotate 180 degrees
Original image
Filtered image
Rotate 270 degrees
Original image
Filtered image
Rotate 30 degrees, white background, cubic interpolation
gift .Rotate (30 , color .White , gift .CubicInterpolation )
Original image
Filtered image
Flip horizontal
Original image
Filtered image
Flip vertical
Original image
Filtered image
Transpose
Original image
Filtered image
Transverse
Original image
Filtered image
Contrast +30%
Original image
Filtered image
Contrast -30%
Original image
Filtered image
Brightness +30%
Original image
Filtered image
Brightness -30%
Original image
Filtered image
Saturation +50%
Original image
Filtered image
Saturation -50%
Original image
Filtered image
Hue +45
Original image
Filtered image
Hue -45
Original image
Filtered image
Sigmoid 0.5, 5.0
Original image
Filtered image
Gamma correction = 0.5
Original image
Filtered image
Gamma correction = 1.5
Original image
Filtered image
Gaussian blur, sigma=1.0
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
Grayscale
Original image
Filtered image
Sepia, 100%
Original image
Filtered image
Invert
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