From d4ba5205ff8891ca70215bd2f41ae69ac4307b93 Mon Sep 17 00:00:00 2001 From: Will Norris Date: Tue, 11 Jun 2019 04:20:46 +0000 Subject: [PATCH] add support for bmp images handle decoding and encoding bmp images with transformations. Because this isn't a popular file format, we don't actually expose it as an option for format transformation. Fixes #182 --- transform.go | 7 +++++++ transform_test.go | 2 ++ 2 files changed, 9 insertions(+) diff --git a/transform.go b/transform.go index e81488f..f5e6438 100644 --- a/transform.go +++ b/transform.go @@ -29,6 +29,7 @@ import ( "github.com/muesli/smartcrop" "github.com/muesli/smartcrop/nfnt" "github.com/rwcarlsen/goexif/exif" + "golang.org/x/image/bmp" // register bmp format "golang.org/x/image/tiff" // register tiff format _ "golang.org/x/image/webp" // register webp format "willnorris.com/go/gifresize" @@ -79,6 +80,12 @@ func Transform(img []byte, opt Options) ([]byte, error) { // transform and encode image buf := new(bytes.Buffer) switch format { + case "bmp": + m = transformImage(m, opt) + err = bmp.Encode(buf, m) + if err != nil { + return nil, err + } case "gif": fn := func(img image.Image) image.Image { return transformImage(img, opt) diff --git a/transform_test.go b/transform_test.go index 7ca8311..f7555a9 100644 --- a/transform_test.go +++ b/transform_test.go @@ -28,6 +28,7 @@ import ( "testing" "github.com/disintegration/imaging" + "golang.org/x/image/bmp" ) var ( @@ -111,6 +112,7 @@ func TestTransform(t *testing.T) { encode func(io.Writer, image.Image) exactOutput bool // whether input and output should match exactly }{ + {"bmp", func(w io.Writer, m image.Image) { bmp.Encode(w, m) }, true}, {"gif", func(w io.Writer, m image.Image) { gif.Encode(w, m, nil) }, true}, {"jpeg", func(w io.Writer, m image.Image) { jpeg.Encode(w, m, nil) }, false}, {"png", func(w io.Writer, m image.Image) { png.Encode(w, m) }, true},