From a28d3b594b089af837c6a319d7b7b6a8f7155210 Mon Sep 17 00:00:00 2001
From: Morris Jobke <hey@morrisjobke.de>
Date: Sun, 18 Jan 2015 23:15:52 +0100
Subject: [PATCH] Fix exif orientation for flipped images

fixes #13363

Links:
 * http://www.daveperrett.com/articles/2012/07/28/exif-orientation-handling-is-a-ghetto/
 * Example data: https://github.com/recurser/exif-orientation-examples
---
 lib/private/image.php | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/lib/private/image.php b/lib/private/image.php
index 07cfb0f72d..90b024de3d 100644
--- a/lib/private/image.php
+++ b/lib/private/image.php
@@ -358,35 +358,42 @@ class OC_Image {
 		$o = $this->getOrientation();
 		$this->logger->debug('OC_Image->fixOrientation() Orientation: ' . $o, array('app' => 'core'));
 		$rotate = 0;
+		$flip = false;
 		switch ($o) {
 			case -1:
 				return false; //Nothing to fix
 			case 1:
 				$rotate = 0;
 				break;
-			case 2: // Not tested
+			case 2:
 				$rotate = 0;
+				$flip = true;
 				break;
 			case 3:
 				$rotate = 180;
 				break;
-			case 4: // Not tested
+			case 4:
 				$rotate = 180;
+				$flip = true;
 				break;
-			case 5: // Not tested
+			case 5:
 				$rotate = 90;
+				$flip = true;
 				break;
 			case 6:
-				//$rotate = 90;
 				$rotate = 270;
 				break;
-			case 7: // Not tested
+			case 7:
 				$rotate = 270;
+				$flip = true;
 				break;
 			case 8:
 				$rotate = 90;
 				break;
 		}
+		if($flip) {
+			imageflip($this->resource, IMG_FLIP_HORIZONTAL);
+		}
 		if ($rotate) {
 			$res = imagerotate($this->resource, $rotate, 0);
 			if ($res) {
-- 
GitLab