From: Laury GvR Date: Fri, 23 Jun 2017 16:31:57 +0000 (-0400) Subject: Image EXIF now properly stripped using either Imagick or GD for member profile image... X-Git-Tag: v2.10.0^2~17 X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/?a=commitdiff_plain;h=880118653b3dd7ea6c8646b6b7a0b26374888e7b;p=WP-Plugins%2Fglm-member-db.git Image EXIF now properly stripped using either Imagick or GD for member profile image gallery uploads --- diff --git a/models/admin/ajax/imageUpload.php b/models/admin/ajax/imageUpload.php index ab8fb2b8..216b5851 100644 --- a/models/admin/ajax/imageUpload.php +++ b/models/admin/ajax/imageUpload.php @@ -124,6 +124,7 @@ class GlmMembersAdmin_ajax_imageUpload extends GlmDataImages // Store the image $file = $this->storeImage($file, $refType, $refTable, $refDest); +// error_log(json_encode($file)); $return['files'][] = $file; @@ -180,6 +181,9 @@ class GlmMembersAdmin_ajax_imageUpload extends GlmDataImages ); } + // Strip meta data off image - this prevents EXIF orientation shenanigans + $file['tmp_name'] = $this->stripImageMeta($file['tmp_name']); + // Get the desired file name and add a timestamp to it to ensure that it's unique $fInfo = pathinfo($file['name']); @@ -289,9 +293,16 @@ class GlmMembersAdmin_ajax_imageUpload extends GlmDataImages /* * Strip an image of all its metadata using either imagemagick or GD * - * None of the metadata will be preserved. This function can be refined with settings - * to preserve certain metadata fields. In case of GD, image type is determined, but - * if it is not jpg, png or bmp, no stripping will take place. + * None of the metadata will be preserved. This function can be refined further + * with settings to preserve certain metadata fields if desired at a later point. + * + * In case of Image Magick/Imagick being installed, a new Imagick object is created + * that rewrites the original image. + * + * In case of GD, image type is determined to use the appropriate imagecreatfrom + * function. If it is not either JPG, PNG or BMP, no stripping will take place. + * + * If neither extension is found, the image is returned unchanged.. * * @param $imageName string Image resource to be processed * @@ -314,24 +325,25 @@ class GlmMembersAdmin_ajax_imageUpload extends GlmDataImages } else if (extension_loaded('gd') && function_exists('gd_info')) { $image_type = exif_imagetype($imageName); + $newImageQuality = 100; switch ($image_type) { - case "IMAGETYPE_JPEG": - $imageName = imagecreatefromjpeg($imageName); + case 2: // JPG + $newImage = imagecreatefromjpeg($imageName); break; - case "IMAGETYPE_PNG": - $imageName = imagecreatefrompng($imageName); + case 3: // PNG + $newImage = imagecreatefrompng($imageName); break; - case "IMAGETYPE_BMP": - $imageName = imagecreatefrombmp($imageName); + case 6: // BMP + $newImage = imagecreatefrombmp($imageName); break; default: break; } + imagejpeg($newImage, $imageName, $newImageQuality); } - return $imageName; }