From 2e90c11e5b4ee1f5b109f9507a53330089b127b6 Mon Sep 17 00:00:00 2001 From: Tomas Aparicio Date: Mon, 6 Apr 2015 02:21:08 +0200 Subject: [PATCH] refactor: crop and tests --- README.md | 14 ++++++++++++-- image.go | 9 +++++++++ image_test.go | 26 ++++++++++++++++++++++---- 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index bd4a29e..baedf0f 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ Go library for blazing fast image processing based on [libvips](https://github.com/jcupitt/libvips) using C bindings. -**bimg** was focused on performance, resizing an image with libvips is typically 4x faster than using the quickest ImageMagick and GraphicsMagick settings. +libvips is typically 4x faster than using the quickest ImageMagick and GraphicsMagick settings, and even 8x faster with JPEG format. It support JPEG, PNG, WEBP, TIFF and Magick image formats. -**bimg** was heavily inspired in [sharp](https://github.com/lovell/sharp), a great node.js package for image processing build by [Lovell Fuller](https://github.com/lovell). +bimg was heavily inspired in [sharp](https://github.com/lovell/sharp), a great node.js package for image processing build by [Lovell Fuller](https://github.com/lovell). `Work in progress` @@ -29,6 +29,16 @@ curl -s https://raw.githubusercontent.com/lovell/sharp/master/preinstall.sh | su The [install script](https://github.com/lovell/sharp/blob/master/preinstall.sh) requires `curl` and `pkg-config`. +## Image operations + +- Resize +- Crop +- Enlarge +- Zoom +- Extract +- Image metadata +- Image conversion to multiple formats + ## API ```go diff --git a/image.go b/image.go index 489a411..0a4fc3f 100644 --- a/image.go +++ b/image.go @@ -22,6 +22,15 @@ func (i *Image) Extract(top int, left int, width int, height int) ([]byte, error return i.Process(options) } +func (i *Image) Crop(width int, height int) ([]byte, error) { + options := Options{ + Width: width, + Height: height, + Crop: true, + } + return i.Process(options) +} + func (i *Image) Rotate(a Angle) ([]byte, error) { options := Options{Rotate: a} return i.Process(options) diff --git a/image_test.go b/image_test.go index 4872835..132faea 100644 --- a/image_test.go +++ b/image_test.go @@ -7,13 +7,31 @@ import ( ) func TestImageResize(t *testing.T) { - data, _ := os.Open("fixtures/test.jpg") - buf, err := ioutil.ReadAll(data) + image := readImage() + _, err := image.Resize(300, 240) + if err != nil { + t.Errorf("Cannot process the image: %#v", err) + } +} - image := NewImage(buf) +func TestImageCrop(t *testing.T) { + image := readImage() + _, err := image.Crop(300, 240) + if err != nil { + t.Errorf("Cannot process the image: %#v", err) + } +} - buf, err = image.Resize(300, 240) +func TestImageRotate(t *testing.T) { + image := readImage() + _, err := image.Rotate(D90) if err != nil { t.Errorf("Cannot process the image: %#v", err) } } + +func readImage() *Image { + data, _ := os.Open("fixtures/test.jpg") + buf, _ := ioutil.ReadAll(data) + return NewImage(buf) +}