From b9df4c99cf9fcd1b16757309b4206ad084376aa2 Mon Sep 17 00:00:00 2001 From: Klaus Weidenbach Date: Mon, 11 Feb 2019 23:59:43 +0100 Subject: Remove duplicate code in PhotoDriver classes. cropImage is just a special case of cropImageRect, no need to duplicate all the code. --- Zotlabs/Photo/PhotoDriver.php | 34 ++++++++++++++++++++++++++++++++-- Zotlabs/Photo/PhotoGd.php | 18 ------------------ Zotlabs/Photo/PhotoImagick.php | 18 ------------------ 3 files changed, 32 insertions(+), 38 deletions(-) (limited to 'Zotlabs/Photo') diff --git a/Zotlabs/Photo/PhotoDriver.php b/Zotlabs/Photo/PhotoDriver.php index e2e143f8d..c47a7c3b2 100644 --- a/Zotlabs/Photo/PhotoDriver.php +++ b/Zotlabs/Photo/PhotoDriver.php @@ -80,8 +80,18 @@ abstract class PhotoDriver { abstract public function flip($horiz = true, $vert = false); - abstract public function cropImage($max, $x, $y, $w, $h); - + /** + * @brief Crops the image. + * + * @param int $maxx width of the new image + * @param int $maxy height of the new image + * @param int $x x-offset for region + * @param int $y y-offset for region + * @param int $w width of region + * @param int $h height of region + * + * @return boolean|void false on failure + */ abstract public function cropImageRect($maxx, $maxy, $x, $y, $w, $h); /** @@ -299,6 +309,26 @@ abstract class PhotoDriver { $this->doScaleImage($dim, $dim); } + /** + * @brief Crops a square image. + * + * @see cropImageRect() + * + * @param int $max size of the new image + * @param int $x x-offset for region + * @param int $y y-offset for region + * @param int $w width of region + * @param int $h height of region + * + * @return boolean|void false on failure + */ + public function cropImage($max, $x, $y, $w, $h) { + if(! $this->is_valid()) + return false; + + $this->cropImageRect($max, $max, $x, $y, $w, $h); + } + /** * @brief Reads exif data from a given filename. * diff --git a/Zotlabs/Photo/PhotoGd.php b/Zotlabs/Photo/PhotoGd.php index 1143c565c..4054e1866 100644 --- a/Zotlabs/Photo/PhotoGd.php +++ b/Zotlabs/Photo/PhotoGd.php @@ -119,24 +119,6 @@ class PhotoGd extends PhotoDriver { $this->setDimensions(); // Shouldn't really be necessary } - public function cropImage($max, $x, $y, $w, $h) { - if(!$this->is_valid()) - return false; - - $dest = imagecreatetruecolor($max, $max); - imagealphablending($dest, false); - imagesavealpha($dest, true); - if($this->type == 'image/png') - imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha - - imagecopyresampled($dest, $this->image, 0, 0, $x, $y, $max, $max, $w, $h); - if($this->image) - imagedestroy($this->image); - - $this->image = $dest; - $this->setDimensions(); - } - public function cropImageRect($maxx, $maxy, $x, $y, $w, $h) { if(! $this->is_valid()) return false; diff --git a/Zotlabs/Photo/PhotoImagick.php b/Zotlabs/Photo/PhotoImagick.php index 373bac40f..a7026e8ca 100644 --- a/Zotlabs/Photo/PhotoImagick.php +++ b/Zotlabs/Photo/PhotoImagick.php @@ -169,24 +169,6 @@ class PhotoImagick extends PhotoDriver { $this->setDimensions(); // Shouldn't really be necessary } - public function cropImage($max,$x,$y,$w,$h) { - if(!$this->is_valid()) - return false; - - $this->image->setFirstIterator(); - do { - $this->image->cropImage($w, $h, $x, $y); - /* - * We need to remove the canvas, - * or the image is not resized to the crop: - * http://php.net/manual/en/imagick.cropimage.php#97232 - */ - $this->image->setImagePage(0, 0, 0, 0); - } while($this->image->nextImage()); - - $this->doScaleImage($max, $max); - } - public function cropImageRect($maxx, $maxy, $x, $y, $w, $h) { if(! $this->is_valid()) return false; -- cgit v1.2.3