diff options
Diffstat (limited to 'go/images/resizing.go')
| -rw-r--r-- | go/images/resizing.go | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/go/images/resizing.go b/go/images/resizing.go index 6e774e1db..7e21db70b 100644 --- a/go/images/resizing.go +++ b/go/images/resizing.go @@ -9,17 +9,22 @@ import ( "image/png" ) -func Resized(ext string, data []byte, width, height int) (resized []byte) { +func Resized(ext string, data []byte, width, height int) (resized []byte, w int, h int) { if width == 0 && height == 0 { - return data + return data, 0, 0 } if srcImage, _, err := image.Decode(bytes.NewReader(data)); err == nil { bounds := srcImage.Bounds() var dstImage *image.NRGBA - if width == height && bounds.Dx() != bounds.Dy() { - dstImage = imaging.Thumbnail(srcImage, width, height, imaging.Lanczos) - } else { - dstImage = imaging.Resize(srcImage, width, height, imaging.Lanczos) + if bounds.Dx() > width && width != 0 || bounds.Dy() > height && height != 0 { + if width == height && bounds.Dx() != bounds.Dy() { + dstImage = imaging.Thumbnail(srcImage, width, height, imaging.Lanczos) + w, h = width, height + } else { + dstImage = imaging.Resize(srcImage, width, height, imaging.Lanczos) + } + }else{ + return data, bounds.Dx(), bounds.Dy() } var buf bytes.Buffer switch ext { @@ -30,7 +35,7 @@ func Resized(ext string, data []byte, width, height int) (resized []byte) { case ".gif": gif.Encode(&buf, dstImage, nil) } - return buf.Bytes() + return buf.Bytes(), dstImage.Bounds().Dx(), dstImage.Bounds().Dy() } - return data + return data, 0, 0 } |
