mirror of
https://github.com/talgo-cloud/bimg.git
synced 2026-03-15 10:25:55 -07:00
feat(crop): add method shortcuts for crop
This commit is contained in:
parent
6d27b8ef91
commit
c9001cd22c
2 changed files with 53 additions and 3 deletions
24
image.go
24
image.go
|
|
@ -14,6 +14,17 @@ func (i *Image) Resize(width, height int) ([]byte, error) {
|
||||||
return i.Process(options)
|
return i.Process(options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Resize the image to fixed width and height with additional crop transformation
|
||||||
|
func (i *Image) ResizeAndCrop(width, height int) ([]byte, error) {
|
||||||
|
options := Options{
|
||||||
|
Width: width,
|
||||||
|
Height: height,
|
||||||
|
Embed: true,
|
||||||
|
Crop: true,
|
||||||
|
}
|
||||||
|
return i.Process(options)
|
||||||
|
}
|
||||||
|
|
||||||
// Extract area from the by X/Y axis
|
// Extract area from the by X/Y axis
|
||||||
func (i *Image) Extract(top, left, width, height int) ([]byte, error) {
|
func (i *Image) Extract(top, left, width, height int) ([]byte, error) {
|
||||||
options := Options{
|
options := Options{
|
||||||
|
|
@ -25,7 +36,7 @@ func (i *Image) Extract(top, left, width, height int) ([]byte, error) {
|
||||||
return i.Process(options)
|
return i.Process(options)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enlarge the image from the by X/Y axis
|
// Enlarge the image by width and height. Aspect ratio is maintained
|
||||||
func (i *Image) Enlarge(width, height int) ([]byte, error) {
|
func (i *Image) Enlarge(width, height int) ([]byte, error) {
|
||||||
options := Options{
|
options := Options{
|
||||||
Width: width,
|
Width: width,
|
||||||
|
|
@ -35,6 +46,17 @@ func (i *Image) Enlarge(width, height int) ([]byte, error) {
|
||||||
return i.Process(options)
|
return i.Process(options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Enlarge the image by width and height with additional crop transformation
|
||||||
|
func (i *Image) EnlargeAndCrop(width, height int) ([]byte, error) {
|
||||||
|
options := Options{
|
||||||
|
Width: width,
|
||||||
|
Height: height,
|
||||||
|
Enlarge: true,
|
||||||
|
Crop: true,
|
||||||
|
}
|
||||||
|
return i.Process(options)
|
||||||
|
}
|
||||||
|
|
||||||
// Crop the image to the exact size specified
|
// Crop the image to the exact size specified
|
||||||
func (i *Image) Crop(width, height int, gravity Gravity) ([]byte, error) {
|
func (i *Image) Crop(width, height int, gravity Gravity) ([]byte, error) {
|
||||||
options := Options{
|
options := Options{
|
||||||
|
|
|
||||||
|
|
@ -20,13 +20,27 @@ func TestImageResize(t *testing.T) {
|
||||||
Write("fixtures/test_resize_out.jpg", buf)
|
Write("fixtures/test_resize_out.jpg", buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestImageResizeAndCrop(t *testing.T) {
|
||||||
|
buf, err := initImage("test.jpg").ResizeAndCrop(300, 200)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Cannot process the image: %#v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = assertSize(buf, 300, 200)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
Write("fixtures/test_resize_crop_out.jpg", buf)
|
||||||
|
}
|
||||||
|
|
||||||
func TestImageExtract(t *testing.T) {
|
func TestImageExtract(t *testing.T) {
|
||||||
buf, err := initImage("test.jpg").Extract(100, 100, 300, 300)
|
buf, err := initImage("test.jpg").Extract(100, 100, 300, 200)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Cannot process the image: %s", err)
|
t.Errorf("Cannot process the image: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = assertSize(buf, 300, 300)
|
err = assertSize(buf, 300, 200)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
@ -48,6 +62,20 @@ func TestImageEnlarge(t *testing.T) {
|
||||||
Write("fixtures/test_enlarge_out.jpg", buf)
|
Write("fixtures/test_enlarge_out.jpg", buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestImageEnlargeAndCrop(t *testing.T) {
|
||||||
|
buf, err := initImage("test.png").EnlargeAndCrop(800, 480)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Cannot process the image: %#v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = assertSize(buf, 800, 480)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
Write("fixtures/test_enlarge_crop_out.jpg", buf)
|
||||||
|
}
|
||||||
|
|
||||||
func TestImageCrop(t *testing.T) {
|
func TestImageCrop(t *testing.T) {
|
||||||
buf, err := initImage("test.jpg").Crop(800, 600, NORTH)
|
buf, err := initImage("test.jpg").Crop(800, 600, NORTH)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue