Documentation ¶
Overview ¶
Package imaging provides basic image manipulation functions (resize, rotate, flip, crop, etc.). This package is based on the standard Go image package and works best along with it.
Image manipulation functions provided by the package take any image type that implements `image.Image` interface as an input, and return a new image of `*image.NRGBA` type (32bit RGBA colors, not premultiplied by alpha).
Example ¶
package main import ( "image" "image/color" "log" "github.com/disintegration/imaging" ) func main() { // Open the test image. src, err := imaging.Open("testdata/lena_512.png") if err != nil { log.Fatalf("Open failed: %v", err) } // Crop the original image to 350x350px size using the center anchor. src = imaging.CropAnchor(src, 350, 350, imaging.Center) // Resize the cropped image to width = 256px preserving the aspect ratio. src = imaging.Resize(src, 256, 0, imaging.Lanczos) // Create a blurred version of the image. img1 := imaging.Blur(src, 2) // Create a grayscale version of the image with higher contrast and sharpness. img2 := imaging.Grayscale(src) img2 = imaging.AdjustContrast(img2, 20) img2 = imaging.Sharpen(img2, 2) // Create an inverted version of the image. img3 := imaging.Invert(src) // Create an embossed version of the image using a convolution filter. img4 := imaging.Convolve3x3( src, [9]float64{ -1, -1, 0, -1, 1, 1, 0, 1, 1, }, nil, ) // Create a new image and paste the four produced images into it. dst := imaging.New(512, 512, color.NRGBA{0, 0, 0, 0}) dst = imaging.Paste(dst, img1, image.Pt(0, 0)) dst = imaging.Paste(dst, img2, image.Pt(0, 256)) dst = imaging.Paste(dst, img3, image.Pt(256, 0)) dst = imaging.Paste(dst, img4, image.Pt(256, 256)) // Save the resulting image using JPEG format. err = imaging.Save(dst, "testdata/out_example.jpg") if err != nil { log.Fatalf("Save failed: %v", err) } }
Output:
Index ¶
- Variables
- func AdjustBrightness(img image.Image, percentage float64) *image.NRGBA
- func AdjustContrast(img image.Image, percentage float64) *image.NRGBA
- func AdjustFunc(img image.Image, fn func(c color.NRGBA) color.NRGBA) *image.NRGBA
- func AdjustGamma(img image.Image, gamma float64) *image.NRGBA
- func AdjustSigmoid(img image.Image, midpoint, factor float64) *image.NRGBA
- func Blur(img image.Image, sigma float64) *image.NRGBA
- func Clone(img image.Image) *image.NRGBA
- func Convolve3x3(img image.Image, kernel [9]float64, options *ConvolveOptions) *image.NRGBA
- func Convolve5x5(img image.Image, kernel [25]float64, options *ConvolveOptions) *image.NRGBA
- func Crop(img image.Image, rect image.Rectangle) *image.NRGBA
- func CropAnchor(img image.Image, width, height int, anchor Anchor) *image.NRGBA
- func CropCenter(img image.Image, width, height int) *image.NRGBA
- func Decode(r io.Reader) (image.Image, error)
- func Encode(w io.Writer, img image.Image, format Format) error
- func Fill(img image.Image, width, height int, anchor Anchor, filter ResampleFilter) *image.NRGBA
- func Fit(img image.Image, width, height int, filter ResampleFilter) *image.NRGBA
- func FlipH(img image.Image) *image.NRGBA
- func FlipV(img image.Image) *image.NRGBA
- func Grayscale(img image.Image) *image.NRGBA
- func Histogram(img image.Image) [256]float64
- func Invert(img image.Image) *image.NRGBA
- func New(width, height int, fillColor color.Color) *image.NRGBA
- func Open(filename string) (image.Image, error)
- func Overlay(background, img image.Image, pos image.Point, opacity float64) *image.NRGBA
- func OverlayCenter(background, img image.Image, opacity float64) *image.NRGBA
- func Paste(background, img image.Image, pos image.Point) *image.NRGBA
- func PasteCenter(background, img image.Image) *image.NRGBA
- func Resize(img image.Image, width, height int, filter ResampleFilter) *image.NRGBA
- func Rotate180(img image.Image) *image.NRGBA
- func Rotate270(img image.Image) *image.NRGBA
- func Rotate90(img image.Image) *image.NRGBA
- func Save(img image.Image, filename string) (err error)
- func Sharpen(img image.Image, sigma float64) *image.NRGBA
- func Thumbnail(img image.Image, width, height int, filter ResampleFilter) *image.NRGBA
- func Transpose(img image.Image) *image.NRGBA
- func Transverse(img image.Image) *image.NRGBA
- type Anchor
- type ConvolveOptions
- type Format
- type ResampleFilter
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrUnsupportedFormat means the given image format (or file extension) is unsupported. ErrUnsupportedFormat = errors.New("imaging: unsupported image format") )
Functions ¶
func AdjustBrightness ¶
AdjustBrightness changes the brightness of the image using the percentage parameter and returns the adjusted image. The percentage must be in range (-100, 100). The percentage = 0 gives the original image. The percentage = -100 gives solid black image. The percentage = 100 gives solid white image.
Examples:
dstImage = imaging.AdjustBrightness(srcImage, -15) // decrease image brightness by 15% dstImage = imaging.AdjustBrightness(srcImage, 10) // increase image brightness by 10%
func AdjustContrast ¶
AdjustContrast changes the contrast of the image using the percentage parameter and returns the adjusted image. The percentage must be in range (-100, 100). The percentage = 0 gives the original image. The percentage = -100 gives solid grey image.
Examples:
dstImage = imaging.AdjustContrast(srcImage, -10) // decrease image contrast by 10% dstImage = imaging.AdjustContrast(srcImage, 20) // increase image contrast by 20%
func AdjustFunc ¶
AdjustFunc applies the fn function to each pixel of the img image and returns the adjusted image.
Example:
dstImage = imaging.AdjustFunc( srcImage, func(c color.NRGBA) color.NRGBA { // shift the red channel by 16 r := int(c.R) + 16 if r > 255 { r = 255 } return color.NRGBA{uint8(r), c.G, c.B, c.A} } )
func AdjustGamma ¶
AdjustGamma performs a gamma correction on the image and returns the adjusted image. Gamma parameter must be positive. Gamma = 1.0 gives the original image. Gamma less than 1.0 darkens the image and gamma greater than 1.0 lightens it.
Example:
dstImage = imaging.AdjustGamma(srcImage, 0.7)
func AdjustSigmoid ¶
AdjustSigmoid changes the contrast of the image using a sigmoidal function and returns the adjusted image. It's a non-linear contrast change useful for photo adjustments as it preserves highlight and shadow detail. The midpoint parameter is the midpoint of contrast that must be between 0 and 1, typically 0.5. The factor parameter indicates how much to increase or decrease the contrast, typically in range (-10, 10). If the factor parameter is positive the image contrast is increased otherwise the contrast is decreased.
Examples:
dstImage = imaging.AdjustSigmoid(srcImage, 0.5, 3.0) // increase the contrast dstImage = imaging.AdjustSigmoid(srcImage, 0.5, -3.0) // decrease the contrast
func Blur ¶
Blur produces a blurred version of the image using a Gaussian function. Sigma parameter must be positive and indicates how much the image will be blurred.
Usage example:
dstImage := imaging.Blur(srcImage, 3.5)
func Convolve3x3 ¶ added in v1.1.0
Convolve3x3 convolves the image with the specified 3x3 convolution kernel. Default parameters are used if a nil *ConvolveOptions is passed.
func Convolve5x5 ¶ added in v1.1.0
Convolve5x5 convolves the image with the specified 5x5 convolution kernel. Default parameters are used if a nil *ConvolveOptions is passed.
func Crop ¶
Crop cuts out a rectangular region with the specified bounds from the image and returns the cropped image.
func CropAnchor ¶
CropAnchor cuts out a rectangular region with the specified size from the image using the specified anchor point and returns the cropped image.
func CropCenter ¶
CropCenter cuts out a rectangular region with the specified size from the center of the image and returns the cropped image.
func Encode ¶
Encode writes the image img to w in the specified format (JPEG, PNG, GIF, TIFF or BMP).
func Fill ¶
Fill scales the image to the smallest possible size that will cover the specified dimensions, crops the resized image to the specified dimensions using the given anchor point and returns the transformed image.
Supported resample filters: NearestNeighbor, Box, Linear, Hermite, MitchellNetravali, CatmullRom, BSpline, Gaussian, Lanczos, Hann, Hamming, Blackman, Bartlett, Welch, Cosine.
Usage example:
dstImage := imaging.Fill(srcImage, 800, 600, imaging.Center, imaging.Lanczos)
func Fit ¶
Fit scales down the image using the specified resample filter to fit the specified maximum width and height and returns the transformed image.
Supported resample filters: NearestNeighbor, Box, Linear, Hermite, MitchellNetravali, CatmullRom, BSpline, Gaussian, Lanczos, Hann, Hamming, Blackman, Bartlett, Welch, Cosine.
Usage example:
dstImage := imaging.Fit(srcImage, 800, 600, imaging.Lanczos)
func FlipH ¶
FlipH flips the image horizontally (from left to right) and returns the transformed image.
func FlipV ¶
FlipV flips the image vertically (from top to bottom) and returns the transformed image.
func Histogram ¶
Histogram returns a normalized histogram of an image.
Resulting histogram is represented as an array of 256 floats, where histogram[i] is a probability of a pixel being of a particular luminance i.
func New ¶
New creates a new image with the specified width and height, and fills it with the specified color.
func Overlay ¶
Overlay draws the img image over the background image at given position and returns the combined image. Opacity parameter is the opacity of the img image layer, used to compose the images, it must be from 0.0 to 1.0.
Usage examples:
// draw the sprite over the background at position (50, 50) dstImage := imaging.Overlay(backgroundImage, spriteImage, image.Pt(50, 50), 1.0) // blend two opaque images of the same size dstImage := imaging.Overlay(imageOne, imageTwo, image.Pt(0, 0), 0.5)
func OverlayCenter ¶
OverlayCenter overlays the img image to the center of the background image and returns the combined image. Opacity parameter is the opacity of the img image layer, used to compose the images, it must be from 0.0 to 1.0.
func Paste ¶
Paste pastes the img image to the background image at the specified position and returns the combined image.
func PasteCenter ¶
PasteCenter pastes the img image to the center of the background image and returns the combined image.
func Resize ¶
Resize resizes the image to the specified width and height using the specified resampling filter and returns the transformed image. If one of width or height is 0, the image aspect ratio is preserved.
Supported resample filters: NearestNeighbor, Box, Linear, Hermite, MitchellNetravali, CatmullRom, BSpline, Gaussian, Lanczos, Hann, Hamming, Blackman, Bartlett, Welch, Cosine.
Usage example:
dstImage := imaging.Resize(srcImage, 800, 600, imaging.Lanczos)
func Rotate180 ¶
Rotate180 rotates the image 180 degrees counterclockwise and returns the transformed image.
func Rotate270 ¶
Rotate270 rotates the image 270 degrees counterclockwise and returns the transformed image.
func Rotate90 ¶
Rotate90 rotates the image 90 degrees counterclockwise and returns the transformed image.
func Save ¶
Save saves the image to file with the specified filename. The format is determined from the filename extension: "jpg" (or "jpeg"), "png", "gif", "tif" (or "tiff") and "bmp" are supported.
func Sharpen ¶
Sharpen produces a sharpened version of the image. Sigma parameter must be positive and indicates how much the image will be sharpened.
Usage example:
dstImage := imaging.Sharpen(srcImage, 3.5)
func Thumbnail ¶
Thumbnail scales the image up or down using the specified resample filter, crops it to the specified width and hight and returns the transformed image.
Supported resample filters: NearestNeighbor, Box, Linear, Hermite, MitchellNetravali, CatmullRom, BSpline, Gaussian, Lanczos, Hann, Hamming, Blackman, Bartlett, Welch, Cosine.
Usage example:
dstImage := imaging.Thumbnail(srcImage, 100, 100, imaging.Lanczos)
Types ¶
type ConvolveOptions ¶ added in v1.1.0
type ConvolveOptions struct { // If Normalize is true the kernel is normalized before convolution. Normalize bool // If Abs is true the absolute value of each color channel is taken after convolution. Abs bool // Bias is added to each color channel value after convolution. Bias int }
ConvolveOptions are convolution parameters.
type ResampleFilter ¶
ResampleFilter is a resampling filter struct. It can be used to define custom filters.
Supported resample filters: NearestNeighbor, Box, Linear, Hermite, MitchellNetravali, CatmullRom, BSpline, Gaussian, Lanczos, Hann, Hamming, Blackman, Bartlett, Welch, Cosine.
General filter recommendations: - Lanczos Probably the best resampling filter for photographic images yielding sharp results, but it's slower than cubic filters (see below). - CatmullRom A sharp cubic filter. It's a good filter for both upscaling and downscaling if sharp results are needed. - MitchellNetravali A high quality cubic filter that produces smoother results with less ringing than CatmullRom. - BSpline A good filter if a very smooth output is needed. - Linear Bilinear interpolation filter, produces reasonably good, smooth output. It's faster than cubic filters. - Box Simple and fast resampling filter appropriate for downscaling. When upscaling it's similar to NearestNeighbor. - NearestNeighbor Fastest resample filter, no antialiasing at all. Rarely used.
var BSpline ResampleFilter
BSpline is a smooth cubic filter (BC-spline; B=1; C=0).
var Bartlett ResampleFilter
Bartlett is a Bartlett-windowed sinc filter (3 lobes).
var Blackman ResampleFilter
Blackman is a Blackman-windowed sinc filter (3 lobes).
var Box ResampleFilter
Box filter (averaging pixels).
var CatmullRom ResampleFilter
CatmullRom is a Catmull-Rom - sharp cubic filter (BC-spline; B=0; C=0.5).
var Cosine ResampleFilter
Cosine is a Cosine-windowed sinc filter (3 lobes).
var Gaussian ResampleFilter
Gaussian is a Gaussian blurring Filter.
var Hamming ResampleFilter
Hamming is a Hamming-windowed sinc filter (3 lobes).
var Hann ResampleFilter
Hann is a Hann-windowed sinc filter (3 lobes).
var Hermite ResampleFilter
Hermite cubic spline filter (BC-spline; B=0; C=0).
var Lanczos ResampleFilter
Lanczos filter (3 lobes).
var Linear ResampleFilter
Linear filter.
var MitchellNetravali ResampleFilter
MitchellNetravali is Mitchell-Netravali cubic filter (BC-spline; B=1/3; C=1/3).
var NearestNeighbor ResampleFilter
NearestNeighbor is a nearest-neighbor filter (no anti-aliasing).
var Welch ResampleFilter
Welch is a Welch-windowed sinc filter (parabolic window, 3 lobes).