README
¶
Cutter
A Go library to crop images.
Cutter was initially developped to be able to crop image resized using github.com/nfnt/resize.
Usage
Read the doc on https://godoc.org/github.com/oliamb/cutter
Import package with
import "github.com/oliamb/cutter"
Package cutter provides a function to crop image.
By default, the original image will be cropped at the given size from the top left corner.
croppedImg, err := cutter.Crop(img, cutter.Config{
Width: 250,
Height: 500,
})
Most of the time, the cropped image will share some memory with the original, so it should be used read only. You must ask explicitely for a copy if nedded.
croppedImg, err := cutter.Crop(img, cutter.Config{
Width: 250,
Height: 500,
Options: cutter.Copy,
})
It is possible to specify the top left position:
croppedImg, err := cutter.Crop(img, cutter.Config{
Width: 250,
Height: 500,
Anchor: image.Point{100, 100},
Mode: cutter.TopLeft, // optional, default value
})
The Anchor property can represents the center of the cropped image instead of the top left corner:
croppedImg, err := cutter.Crop(img, cutter.Config{
Width: 250,
Height: 500,
Mode: cutter.Centered,
})
The default crop use the specified dimension, but it is possible to use Width and Heigth as a ratio instead. In this case, the resulting image will be as big as possible to fit the asked ratio from the anchor position.
croppedImg, err := cutter.Crop(baseImage, cutter.Config{
Width: 4,
Height: 3,
Mode: cutter.Centered,
Options: cutter.Ratio&cutter.Copy, // Copy is useless here
})
About resize
This lib only manage crop and won't resize image, but it works great in combination with github.com/nfnt/resize
Contributing
I'd love to see your contributions to Cutter. If you'd like to hack on it:
- fork the project,
- hack on it,
- ensure tests pass,
- make a pull request
If you plan to modify the API, let's disscuss it first.
Licensing
MIT License, Please see the file called LICENSE.
Credits
Test Picture: Gopher picture from Heidi Schuyt, http://www.flickr.com/photos/hschuyt/7674222278/, © copyright Creative Commons(http://creativecommons.org/licenses/by-nc-sa/2.0/)
Thanks to Urturn(http://www.urturn.com) for the time allocated to develop the library.
Documentation
¶
Overview ¶
Package cutter provides a function to crop image.
By default, the original image will be cropped at the given size from the top left corner.
croppedImg, err := cutter.Crop(img, cutter.Config{ Width: 250, Height: 500, })
Most of the time, the cropped image will share some memory with the original, so it should be used read only. You must ask explicitely for a copy if nedded.
croppedImg, err := cutter.Crop(img, cutter.Config{ Width: 250, Height: 500, Options: Copy, })
It is possible to specify the top left position:
croppedImg, err := cutter.Crop(img, cutter.Config{ Width: 250, Height: 500, Anchor: image.Point{100, 100}, Mode: TopLeft, // optional, default value })
The Anchor property can represents the center of the cropped image instead of the top left corner:
croppedImg, err := cutter.Crop(img, cutter.Config{ Width: 250, Height: 500, Mode: Centered, })
The default crop use the specified dimension, but it is possible to use Width and Heigth as a ratio instead. In this case, the resulting image will be as big as possible to fit the asked ratio from the anchor position.
croppedImg, err := cutter.Crop(baseImage, cutter.Config{ Width: 4, Height: 3, Mode: Centered, Options: Ratio, })
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type AnchorMode ¶
type AnchorMode int
AnchorMode is an enumeration of the position an anchor can represent.
const ( // TopLeft defines the Anchor Point // as the top left of the cropped picture. TopLeft AnchorMode = iota // Centered defines the Anchor Point // as the center of the cropped picture. Centered = iota )
type Config ¶
type Config struct {
Width, Height int
Anchor image.Point // The Anchor Point in the source image
Mode AnchorMode // Which point in the resulting image the Anchor Point is referring to
Options Option
}
Config is used to defined the way the crop should be realized.
type Option ¶
type Option int
Option flags to modify the way the crop is done.
const ( // Ratio flag is use when Width and Height // must be used to compute a ratio rather // than absolute size in pixels. Ratio Option = 1 << iota // Copy flag is used to enforce the function // to retrieve a copy of the selected pixels. // This disable the use of SubImage method // to compute the result. Copy = 1 << iota )