diff options
Diffstat (limited to 'app/file.go')
-rw-r--r-- | app/file.go | 29 |
1 files changed, 17 insertions, 12 deletions
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 { |