From 7ac8eaba925cb9f3d02bc93717cb3c573fd26ec2 Mon Sep 17 00:00:00 2001 From: Harrison Healey Date: Wed, 24 May 2017 10:52:05 -0400 Subject: PLT-6534 Rotated uploaded profile pictures to be upright (#6482) --- app/file.go | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'app/file.go') diff --git a/app/file.go b/app/file.go index ad58de623..3b7a6860c 100644 --- a/app/file.go +++ b/app/file.go @@ -495,30 +495,35 @@ func prepareImage(fileData []byte) (*image.Image, int, int) { } // Flip the image to be upright - orientation, _ := getImageOrientation(fileData) + orientation, _ := getImageOrientation(bytes.NewReader(fileData)) + img = makeImageUpright(img, orientation) + return &img, width, height +} + +func makeImageUpright(img image.Image, orientation int) image.Image { switch orientation { case UprightMirrored: - img = imaging.FlipH(img) + return imaging.FlipH(img) case UpsideDown: - img = imaging.Rotate180(img) + return imaging.Rotate180(img) case UpsideDownMirrored: - img = imaging.FlipV(img) + return imaging.FlipV(img) case RotatedCWMirrored: - img = imaging.Transpose(img) + return imaging.Transpose(img) case RotatedCCW: - img = imaging.Rotate270(img) + return imaging.Rotate270(img) case RotatedCCWMirrored: - img = imaging.Transverse(img) + return imaging.Transverse(img) case RotatedCW: - img = imaging.Rotate90(img) + return imaging.Rotate90(img) + default: + return img } - - return &img, width, height } -func getImageOrientation(imageData []byte) (int, error) { - if exifData, err := exif.Decode(bytes.NewReader(imageData)); err != nil { +func getImageOrientation(input io.Reader) (int, error) { + if exifData, err := exif.Decode(input); err != nil { return Upright, err } else { if tag, err := exifData.Get("Orientation"); err != nil { -- cgit v1.2.3-1-g7c22