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},