From f02393e5381a6c59ba7f1f357e61e8ef32cfc1bf Mon Sep 17 00:00:00 2001 From: Toutouwai Date: Fri, 2 Feb 2024 13:02:20 -0500 Subject: [PATCH] Add PR #278 which adds new imSaveReady() hookable method to ImageSizerEngineIMagick module --- .../ImageSizerEngineIMagick.module | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/wire/modules/Image/ImageSizerEngineIMagick/ImageSizerEngineIMagick.module b/wire/modules/Image/ImageSizerEngineIMagick/ImageSizerEngineIMagick.module index affb9c13..d0052bd6 100755 --- a/wire/modules/Image/ImageSizerEngineIMagick/ImageSizerEngineIMagick.module +++ b/wire/modules/Image/ImageSizerEngineIMagick/ImageSizerEngineIMagick.module @@ -4,6 +4,8 @@ * ImageSizer Engine IMagick by Horst * * @todo some class properties need phpdoc + * + * @method imSaveReady($im, $filename) * */ class ImageSizerEngineIMagick extends ImageSizerEngine { @@ -395,7 +397,13 @@ class ImageSizerEngineIMagick extends ImageSizerEngine { } $this->im->setImageDepth(($this->imageDepth > 8 ? 8 : $this->imageDepth)); - + + $imClone = null; + if($this->wire()->hooks->isHooked('ImageSizerEngineIMagick::imSaveReady()')) { + $imClone = clone $this->im; // make a copy before compressions take effect + $this->imSaveReady($imClone, $srcFilename); + } + // determine whether webp should be created as well (or on its own) $webpOnly = $this->webpOnly && $this->supported('webp'); $webpAdd = $webpOnly || ($this->webpAdd && $this->supported('webp')); @@ -404,7 +412,7 @@ class ImageSizerEngineIMagick extends ImageSizerEngine { // only a webp file will be created $this->imWebp = $this->im; } else { - if($webpAdd) $this->imWebp = clone $this->im; // make a copy before compressions take effect + if($webpAdd) $this->imWebp = $imClone ?: clone $this->im; // make a copy before compressions take effect $this->im->setImageFormat($this->imageFormat); $this->im->setImageType($this->imageType); if(in_array(strtoupper($this->imageFormat), array('JPG', 'JPEG'))) { @@ -458,6 +466,16 @@ class ImageSizerEngineIMagick extends ImageSizerEngine { return $return; } + + /** + * Called before saving of image + * + * @param resource $im + * @param string $filename Source filename + * @since 3.0.236 + * + */ + protected function ___imSaveReady($im, $filename) { } /** * Process rotate of an image