From: Jacob Casper Date: Sat, 9 Apr 2022 21:15:53 +0000 (-0500) Subject: Rework EXIF stripping/orientation X-Git-Url: https://git.jacobcasper.com/?a=commitdiff_plain;h=f58582b2be1e449e84f5a45f9560854d3c9076e6;p=pics.git Rework EXIF stripping/orientation This makes sure we reorient images with orientation info from iOS before we strip them. --- 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']); }