gitea

Development moved to Codeberg

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
  100. 100
  101. 101
  102. 102
  103. 103
  104. 104
  105. 105
  106. 106
  107. 107
Cutter
======

A Go library to crop images.

[![Build Status](https://travis-ci.org/oliamb/cutter.png?branch=master)](https://travis-ci.org/oliamb/cutter)
[![GoDoc](https://godoc.org/github.com/oliamb/cutter?status.png)](https://godoc.org/github.com/oliamb/cutter)

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

```go
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.

```go
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.

```go
croppedImg, err := cutter.Crop(img, cutter.Config{
  Width:  250,
  Height: 500,
  Options: cutter.Copy,
})
```

It is possible to specify the top left position:

```go
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:

```go
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.

```go
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](https://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.