From 88108377f5d4b0d4d3969716d49939d1d5f8e03a Mon Sep 17 00:00:00 2001 From: "Michael J. Rubinsky" Date: Fri, 29 May 2009 13:31:21 -0400 Subject: [PATCH] Fix border generation, padding Use passed in border values when bordering individual images in the stack Fix generation of image padding, and try to streamline this. I don't remember the reason for wrapping the borderImage call and composing it. This seems to work locally, though I need to test it with older Im versions. --- .../lib/Horde/Image/Effect/Imagick/PhotoStack.php | 44 ++++++++++++++-------- framework/Image/lib/Horde/Image/Imagick.php | 2 +- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/framework/Image/lib/Horde/Image/Effect/Imagick/PhotoStack.php b/framework/Image/lib/Horde/Image/Effect/Imagick/PhotoStack.php index f46cc93ed..35d0908bf 100644 --- a/framework/Image/lib/Horde/Image/Effect/Imagick/PhotoStack.php +++ b/framework/Image/lib/Horde/Image/Effect/Imagick/PhotoStack.php @@ -104,7 +104,10 @@ class Horde_Image_Effect_Imagick_PhotoStack extends Horde_Image_Effect if ($this->_params['type'] == 'rounded') { $imgk = $this->_roundBorder($imgk); } else { - Horde_Image_Imagick::borderImage($imgk, $this->_params['bordercolor'], 1, 1); + Horde_Image_Imagick::borderImage($imgk, + $this->_params['bordercolor'], + $this->_params['borderwidth'], + $this->_params['borderwidth']); } // Only shadow the bottom image for 'plain' stacks if (!$haveBottom) { @@ -181,27 +184,36 @@ class Horde_Image_Effect_Imagick_PhotoStack extends Horde_Image_Effect $image->destroy(); } + //@TODO: Was this here for BC with Imagick compiled against older Im? + // Remove this after I checked against my older IM install // If we have a background other than 'none' we need to // compose two images together to make sure we *have* a background. - if ($this->_params['background'] != 'none') { - $size = $this->_image->getDimensions(); - $new = new Imagick(); - $new->newImage($length * 1.5 + 20, $length * 1.5 + 20, new ImagickPixel($this->_params['background'])); - $new->setImageFormat($this->_image->getType()); - $new->compositeImage($this->_image->imagick, Imagick::COMPOSITE_OVER, 0, 0); - $this->_image->imagick->clear(); - $this->_image->imagick->addImage($new); - $new->destroy(); - } +// if ($this->_params['background'] != 'none') { +// $size = $this->_image->getDimensions(); +// $new = new Imagick(); +// $new->newImage($length * 1.5 + 20, $length * 1.5 + 20, new ImagickPixel($this->_params['background'])); +// $new->setImageFormat($this->_image->getType()); +// $new->compositeImage($this->_image->imagick, Imagick::COMPOSITE_OVER, 0, 0); +// $this->_image->imagick->clear(); +// $this->_image->imagick->addImage($new); +// $new->destroy(); +// } // Trim the canvas before resizing to keep the thumbnails as large // as possible. $this->_image->imagick->trimImage(0); - if ($this->_params['padding']) { - Horde_Image_Imagick::borderImage($this->_image->imagick, - $this->_params['background'], - $this->_params['padding'], - $this->_params['padding']); + if ($this->_params['padding'] || $this->_params['background'] != 'none') { + $this->_image->imagick->borderImage( + new ImagickPixel($this->_params['background']), + $this->_params['padding'], + $this->_params['padding']); + + // @TODO: Same here, did I do this for older Im versions not working + // right? + //Horde_Image_Imagick::borderImage($this->_image->imagick, + // $this->_params['background'], + // $this->_params['padding'], + // $this->_params['padding']); } return true; diff --git a/framework/Image/lib/Horde/Image/Imagick.php b/framework/Image/lib/Horde/Image/Imagick.php index 220277400..7f66b3e17 100644 --- a/framework/Image/lib/Horde/Image/Imagick.php +++ b/framework/Image/lib/Horde/Image/Imagick.php @@ -411,7 +411,7 @@ class Horde_Image_Imagick extends Horde_Image // transparency. $border = $image->clone(); $border->borderImage(new ImagickPixel($color), $width, $height); - $border->compositeImage($image, Imagick::COMPOSITE_COPY, $width, $height); + $border->compositeImage($image, Imagick::COMPOSITE_OVER, $width, $height); $image->clear(); $image->addImage($border); $border->destroy(); -- 2.11.0