cutter: Index | Examples | Files | Directories

package cutter

import ""

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,



Package Files


func Crop Uses

func Crop(img image.Image, c Config) (image.Image, error)

Crop retrieves an image that is a cropped copy of the original img.

The crop is made given the informations provided in config.


f, err := os.Open("fixtures/gopher.jpg")
if err != nil {
    log.Fatal("Cannot open file", err)
img, _, err := image.Decode(f)
if err != nil {
    log.Fatal("Cannot decode image:", err)

cImg, err := Crop(img, Config{
    Height:  500,                 // height in pixel or Y ratio(see Ratio Option below)
    Width:   500,                 // width in pixel or X ratio
    Mode:    TopLeft,             // Accepted Mode: TopLeft, Centered
    Anchor:  image.Point{10, 10}, // Position of the top left point
    Options: 0,                   // Accepted Option: Ratio

if err != nil {
    log.Fatal("Cannot crop image:", err)
fmt.Println("cImg dimension:", cImg.Bounds())


cImg dimension: (10,10)-(510,510)

type AnchorMode Uses

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 Uses

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 Uses

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



Package cutter imports 2 packages (graph) and is imported by 26 packages. Updated 2018-05-30. Refresh now. Tools for package owners.