mirror of
https://github.com/willnorris/imageproxy.git
synced 2024-12-16 21:56:43 -05:00
parse crop and resize params before transforms
This commit is contained in:
parent
8eee5513ab
commit
ba2da75102
2 changed files with 16 additions and 3 deletions
12
transform.go
12
transform.go
|
@ -251,12 +251,18 @@ func exifOrientation(r io.Reader) (opt Options) {
|
|||
// transformImage modifies the image m based on the transformations specified
|
||||
// in opt.
|
||||
func transformImage(m image.Image, opt Options) image.Image {
|
||||
// Parse crop and resize parameters before applying any transforms.
|
||||
// This is to ensure that any percentage-based values are based off the
|
||||
// size of the original image.
|
||||
rect := cropParams(m, opt)
|
||||
w, h, resize := resizeParams(m, opt)
|
||||
|
||||
// crop if needed
|
||||
if r := cropParams(m, opt); !m.Bounds().Eq(r) {
|
||||
m = imaging.Crop(m, r)
|
||||
if !m.Bounds().Eq(rect) {
|
||||
m = imaging.Crop(m, rect)
|
||||
}
|
||||
// resize if needed
|
||||
if w, h, ok := resizeParams(m, opt); ok {
|
||||
if resize {
|
||||
if opt.Fit {
|
||||
m = imaging.Fit(m, w, h, resampleFilter)
|
||||
} else {
|
||||
|
|
|
@ -351,6 +351,13 @@ func TestTransformImage(t *testing.T) {
|
|||
Options{CropHeight: 2, CropWidth: 2, CropX: 2, CropY: 2},
|
||||
newImage(2, 2, yellow, yellow, yellow, yellow),
|
||||
},
|
||||
|
||||
// percentage-based resize in addition to rectangular crop
|
||||
{
|
||||
newImage(12, 12, red),
|
||||
Options{Width: 0.5, Height: 0.5, CropWidth: 8, CropHeight: 8},
|
||||
newImage(6, 6, red),
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
|
Loading…
Reference in a new issue