diff --git a/transform.go b/transform.go index 92e0d82..e4fea27 100644 --- a/transform.go +++ b/transform.go @@ -208,7 +208,8 @@ func transformImage(m image.Image, opt Options) image.Image { } // rotate - switch opt.Rotate { + rotate := float64(opt.Rotate) - math.Floor(float64(opt.Rotate)/360)*360 + switch rotate { case 90: m = imaging.Rotate90(m) case 180: diff --git a/transform_test.go b/transform_test.go index 2897bbc..f9f597f 100644 --- a/transform_test.go +++ b/transform_test.go @@ -165,9 +165,12 @@ func TestTransformImage(t *testing.T) { // rotations {ref, Options{Rotate: 45}, ref}, // invalid rotation is a noop + {ref, Options{Rotate: 360}, ref}, {ref, Options{Rotate: 90}, newImage(2, 2, green, yellow, red, blue)}, {ref, Options{Rotate: 180}, newImage(2, 2, yellow, blue, green, red)}, {ref, Options{Rotate: 270}, newImage(2, 2, blue, red, yellow, green)}, + {ref, Options{Rotate: 630}, newImage(2, 2, blue, red, yellow, green)}, + {ref, Options{Rotate: -90}, newImage(2, 2, blue, red, yellow, green)}, // flips {