0
Fork 0
mirror of https://codeberg.org/forgejo/forgejo.git synced 2024-12-24 08:06:49 -05:00
forgejo/vendor/github.com/oliamb/cutter
Rob Watson df2557835b Improve handling of non-square avatars (#7025)
* Crop avatar before resizing (#1268)

Signed-off-by: Rob Watson <rfwatson@users.noreply.github.com>

* Fix spelling error

Signed-off-by: Rob Watson <rfwatson@users.noreply.github.com>
2019-05-25 14:46:14 +03:00
..
.gitignore Improve handling of non-square avatars (#7025) 2019-05-25 14:46:14 +03:00
.travis.yml Improve handling of non-square avatars (#7025) 2019-05-25 14:46:14 +03:00
cutter.go Improve handling of non-square avatars (#7025) 2019-05-25 14:46:14 +03:00
LICENSE Improve handling of non-square avatars (#7025) 2019-05-25 14:46:14 +03:00
README.md Improve handling of non-square avatars (#7025) 2019-05-25 14:46:14 +03:00

Cutter

A Go library to crop images.

Build Status GoDoc

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.