diff --git a/bl-kernel/helpers/image.class.php b/bl-kernel/helpers/image.class.php index db70ae74..e139b4fb 100644 --- a/bl-kernel/helpers/image.class.php +++ b/bl-kernel/helpers/image.class.php @@ -12,12 +12,49 @@ class Image { // *** Open up the file $this->image = $this->openImage($fileName); + // *** Fix issues with orientation being set in metadata + $this->fixOrientation($fileName); + // *** Get width and height $this->width = imagesx($this->image); $this->height = imagesy($this->image); $this->resizeImage($newWidth, $newHeight, $option); } + + private function fixOrientation($filename) { + $exif = exif_read_data($filename); + + if (!empty($exif['Orientation'])) { + switch ($exif['Orientation']) { + case 1: + break; + case 2: + $this->image = imageflip($this->image, IMG_FLIP_HORIZONTAL); + break; + case 3: + $this->image = imagerotate($this->image, 180, 0); + break; + case 4: + $this->image = imageflip($this->image, IMG_FLIP_VERTICAL); + break; + case 5: + $this->image = imageflip($this->image, IMG_FLIP_VERTICAL); + $this->image = imagerotate($this->image, -90, 0); + break; + case 6: + $this->image = imagerotate($this->image, -90, 0); + break; + case 7: + $this->image = imageflip($this->image, IMG_FLIP_HORIZONTAL); + $this->image = imagerotate($this->image, -90, 0); + break; + case 8: + $this->image = imagerotate($this->image, 90, 0); + break; + } + } + } public function saveImage($savePath, $imageQuality="100", $forceJPG=false, $forcePNG=false) {