mirror of
https://github.com/willnorris/imageproxy.git
synced 2026-05-26 20:35:12 +02:00
minor cleanup of resizeParams code
This commit is contained in:
parent
8efff4b6a9
commit
d9e4cf282a
2 changed files with 12 additions and 8 deletions
10
transform.go
10
transform.go
|
|
@ -79,7 +79,9 @@ func Transform(img []byte, opt Options) ([]byte, error) {
|
||||||
return buf.Bytes(), nil
|
return buf.Bytes(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func resizeParams(m image.Image, opt *Options) (w, h int, resize bool) {
|
// resizeParams determines if the image needs to be resized, and if so, the
|
||||||
|
// dimensions to resize to.
|
||||||
|
func resizeParams(m image.Image, opt Options) (w, h int, resize bool) {
|
||||||
// convert percentage width and height values to absolute values
|
// convert percentage width and height values to absolute values
|
||||||
imgW := m.Bounds().Max.X - m.Bounds().Min.X
|
imgW := m.Bounds().Max.X - m.Bounds().Min.X
|
||||||
imgH := m.Bounds().Max.Y - m.Bounds().Min.Y
|
imgH := m.Bounds().Max.Y - m.Bounds().Min.Y
|
||||||
|
|
@ -98,7 +100,7 @@ func resizeParams(m image.Image, opt *Options) (w, h int, resize bool) {
|
||||||
h = int(opt.Height)
|
h = int(opt.Height)
|
||||||
}
|
}
|
||||||
|
|
||||||
// never resize larger than the original image
|
// never resize larger than the original image unless specifically allowed
|
||||||
if !opt.ScaleUp {
|
if !opt.ScaleUp {
|
||||||
if w > imgW {
|
if w > imgW {
|
||||||
w = imgW
|
w = imgW
|
||||||
|
|
@ -107,10 +109,12 @@ func resizeParams(m image.Image, opt *Options) (w, h int, resize bool) {
|
||||||
h = imgH
|
h = imgH
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// if requested width and height match the original, skip resizing
|
// if requested width and height match the original, skip resizing
|
||||||
if (w == imgW || w == 0) && (h == imgH || h == 0) {
|
if (w == imgW || w == 0) && (h == imgH || h == 0) {
|
||||||
return 0, 0, false
|
return 0, 0, false
|
||||||
}
|
}
|
||||||
|
|
||||||
return w, h, true
|
return w, h, true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -118,7 +122,7 @@ func resizeParams(m image.Image, opt *Options) (w, h int, resize bool) {
|
||||||
// in opt.
|
// in opt.
|
||||||
func transformImage(m image.Image, opt Options) image.Image {
|
func transformImage(m image.Image, opt Options) image.Image {
|
||||||
// resize if needed
|
// resize if needed
|
||||||
if w, h, resize := resizeParams(m, &opt); resize {
|
if w, h, resize := resizeParams(m, opt); resize {
|
||||||
if opt.Fit {
|
if opt.Fit {
|
||||||
m = imaging.Fit(m, w, h, resampleFilter)
|
m = imaging.Fit(m, w, h, resampleFilter)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -40,8 +40,8 @@ func newImage(w, h int, pixels ...color.NRGBA) image.Image {
|
||||||
func TestResizeParams(t *testing.T) {
|
func TestResizeParams(t *testing.T) {
|
||||||
src := image.NewNRGBA(image.Rect(0, 0, 64, 128))
|
src := image.NewNRGBA(image.Rect(0, 0, 64, 128))
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
opt Options
|
opt Options
|
||||||
w, h int
|
w, h int
|
||||||
resize bool
|
resize bool
|
||||||
}{
|
}{
|
||||||
{Options{Width: 0.5}, 32, 0, true},
|
{Options{Width: 0.5}, 32, 0, true},
|
||||||
|
|
@ -52,10 +52,10 @@ func TestResizeParams(t *testing.T) {
|
||||||
{Options{Width: 64}, 0, 0, false},
|
{Options{Width: 64}, 0, 0, false},
|
||||||
{Options{Height: 128}, 0, 0, false},
|
{Options{Height: 128}, 0, 0, false},
|
||||||
}
|
}
|
||||||
for ti, tt := range tests {
|
for _, tt := range tests {
|
||||||
w, h, resize := resizeParams(src, &tt.opt)
|
w, h, resize := resizeParams(src, tt.opt)
|
||||||
if w != tt.w || h != tt.h || resize != tt.resize {
|
if w != tt.w || h != tt.h || resize != tt.resize {
|
||||||
t.Errorf("test %d problem, want: %d,%d,%t got: %d,%d,%t", ti, tt.w, tt.h, tt.resize, w, h, resize)
|
t.Errorf("resizeParams(%v) returned (%d,%d,%t), want (%d,%d,%t)", tt.opt, w, h, resize, tt.w, tt.h, tt.resize)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue