From c05d3647e434f768e5a6b7979e77e3a319ef7e70 Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Fri, 27 Oct 2023 16:02:19 +0200 Subject: [PATCH] Fix image orientation from exif data with Imagick --- .../Imagick/Decoders/BinaryImageDecoder.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/Drivers/Imagick/Decoders/BinaryImageDecoder.php b/src/Drivers/Imagick/Decoders/BinaryImageDecoder.php index ac4f1488..217b15ef 100644 --- a/src/Drivers/Imagick/Decoders/BinaryImageDecoder.php +++ b/src/Drivers/Imagick/Decoders/BinaryImageDecoder.php @@ -26,6 +26,24 @@ class BinaryImageDecoder extends AbstractDecoder implements DecoderInterface $imagick->readImageBlob($input); $imagick = $imagick->coalesceImages(); + // fix image orientation + switch ($imagick->getImageOrientation()) { + case Imagick::ORIENTATION_BOTTOMRIGHT: + $imagick->rotateimage("#000", 180); + break; + + case Imagick::ORIENTATION_RIGHTTOP: + $imagick->rotateimage("#000", 90); + break; + + case Imagick::ORIENTATION_LEFTBOTTOM: + $imagick->rotateimage("#000", -90); + break; + } + + // set new orientation in image + $imagick->setImageOrientation(Imagick::ORIENTATION_TOPLEFT); + $image = new Image($imagick); $image->setLoops($imagick->getImageIterations()); $image->setExif($this->decodeExifData($input));