From 1794ac4334cd02048692870f09d20f0d85c7b0cb Mon Sep 17 00:00:00 2001 From: Zankaria Date: Fri, 21 Mar 2025 01:47:46 +0100 Subject: [PATCH] DefaultImageMetadataReader.php: adkust width and height according to exif orientation --- .../Media/DefaultImageMetadataReader.php | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/inc/Service/Media/DefaultImageMetadataReader.php b/inc/Service/Media/DefaultImageMetadataReader.php index 7935f408..e900eaf1 100644 --- a/inc/Service/Media/DefaultImageMetadataReader.php +++ b/inc/Service/Media/DefaultImageMetadataReader.php @@ -2,6 +2,7 @@ namespace Vichan\Service\Media; use Vichan\Data\Driver\ExifReaderFactory; +use Vichan\Data\Exif; use Vichan\Data\ImageMetadataResult; @@ -29,9 +30,22 @@ class DefaultImageMetadataReader implements ImageMetadataReader { if ($ret[2] == \IMAGETYPE_UNKNOWN) { throw new \RuntimeException("Error '$file_path' is not an image"); } - $exif_reader = $this->exif_reader_factory->getReader($ret['mime']); - $orientation = $exif_reader === null ? null : $exif_reader->getOrientation($file_path); - return new ImageMetadataResult($ret[0], $ret[1], $ret['mime'], $orientation); + $width = $ret[0]; + $height = $ret[1]; + $mime = $ret['mime']; + $orientation = null; + + $exif_reader = $this->exif_reader_factory->getReader($mime); + if ($exif_reader !== null) { + $orientation = $exif_reader->getOrientation($file_path); + if ($orientation !== null && Exif::exifOrientationOnSide($orientation)) { + $tmp = $width; + $width = $height; + $height = $tmp; + } + } + + return new ImageMetadataResult($width, $height, $mime, $orientation); } }