From f58582b2be1e449e84f5a45f9560854d3c9076e6 Mon Sep 17 00:00:00 2001 From: Jacob Casper Date: Sat, 9 Apr 2022 16:15:53 -0500 Subject: [PATCH] Rework EXIF stripping/orientation This makes sure we reorient images with orientation info from iOS before we strip them. --- upload.php | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/upload.php b/upload.php index d69e283..65edac0 100644 --- a/upload.php +++ b/upload.php @@ -22,12 +22,28 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { die('Upload error'); } $size = $images['size'][$i]; - // strip EXIF + + // imagemagick manip code $img = new Imagick($tmp_file); - // keep ICC for quality + // no compression + $img->setImageCompressionQuality(100); $profiles = $img->getImageProfiles("icc", true); + $exif_orientation = $img->getImageOrientation(); + + // STRIP EXIF DATA $img->stripImage(); + + // REAPPLY EXIF DATA + if($exif_orientation === imagick::ORIENTATION_BOTTOMRIGHT) { + $img->rotateImage("#000", 180); + } elseif ($exif_orientation === imagick::ORIENTATION_RIGHTTOP) { + $img->rotateImage("#000", 90); + } elseif ($exif_orientation === imagick::ORIENTATION_LEFTBOTTOM) { + $img->rotateImage("#000", -90); + } + $img->setImageOrientation(imagick::ORIENTATION_TOPLEFT); if(!empty($profiles)) { + // keep ICC for quality $img->profileImage('icc', $profiles['icc']); } -- 2.20.1