Overview

Packages

  • Image
  • None

Classes

  • Horde_Image
  • Horde_Image_Base
  • Horde_Image_Effect
  • Horde_Image_Effect_Border
  • Horde_Image_Effect_Gd_DropShadow
  • Horde_Image_Effect_Gd_RoundCorners
  • Horde_Image_Effect_Gd_TextWatermark
  • Horde_Image_Effect_Gd_Unsharpmask
  • Horde_Image_Effect_Im_Border
  • Horde_Image_Effect_Im_CenterCrop
  • Horde_Image_Effect_Im_Composite
  • Horde_Image_Effect_Im_DropShadow
  • Horde_Image_Effect_Im_LiquidResize
  • Horde_Image_Effect_Im_PhotoStack
  • Horde_Image_Effect_Im_PolaroidImage
  • Horde_Image_Effect_Im_RoundCorners
  • Horde_Image_Effect_Im_TextWatermark
  • Horde_Image_Effect_Im_Unsharpmask
  • Horde_Image_Effect_Imagick_Border
  • Horde_Image_Effect_Imagick_CenterCrop
  • Horde_Image_Effect_Imagick_Composite
  • Horde_Image_Effect_Imagick_DropShadow
  • Horde_Image_Effect_Imagick_LiquidResize
  • Horde_Image_Effect_Imagick_PhotoStack
  • Horde_Image_Effect_Imagick_PolaroidImage
  • Horde_Image_Effect_Imagick_RoundCorners
  • Horde_Image_Effect_Imagick_SmartCrop
  • Horde_Image_Effect_Imagick_TextWatermark
  • Horde_Image_Effect_Imagick_Unsharpmask
  • Horde_Image_Exception
  • Horde_Image_Exif
  • Horde_Image_Exif_Base
  • Horde_Image_Exif_Bundled
  • Horde_Image_Exif_Exiftool
  • Horde_Image_Exif_Parser_Base
  • Horde_Image_Exif_Php
  • Horde_Image_Gd
  • Horde_Image_Im
  • Horde_Image_Imagick
  • Horde_Image_Png
  • Horde_Image_Svg
  • Horde_Image_Swf
  • Horde_Image_Translation
  • Overview
  • Package
  • Class
  • Tree
 1: <?php
 2: /**
 3:  * Image effect for rounding image corners.
 4:  *
 5:  * Copyright 2007-2012 Horde LLC (http://www.horde.org/)
 6:  *
 7:  * @author  Michael J. Rubinsky <mrubinsk@horde.org>
 8:  * @package Image
 9:  */
10: class Horde_Image_Effect_Imagick_RoundCorners extends Horde_Image_Effect
11: {
12:     /**
13:      * Valid parameters:
14:      *
15:      *  radius - Radius of rounded corners.
16:      *
17:      * @var array
18:      */
19:     protected $_params = array('radius' => 10,
20:                                'background' => 'none',
21:                                'border' => 0,
22:                                'bordercolor' => 'none');
23: 
24:     public function apply()
25:     {
26:         if (!method_exists($this->_image->imagick, 'roundCorners')) {
27:                 throw new Horde_Image_Exception('Your version of Imagick is not compiled against a recent enough ImageMagick library (> 6.2.8) to use the RoundCorners effect.');
28:         }
29: 
30:         $round = $this->_params['radius'];
31:         $result = $this->_image->imagick->roundCorners($round, $round);
32: 
33:         // Using a border?
34:         if ($this->_params['bordercolor'] != 'none' &&
35:             $this->_params['border'] > 0) {
36: 
37:             $size = $this->_image->getDimensions();
38: 
39:             $new = new Imagick();
40:             $new->newImage($size['width'] + $this->_params['border'],
41:                            $size['height'] + $this->_params['border'],
42:                            $this->_params['bordercolor']);
43:             $new->setImageFormat($this->_image->getType());
44: 
45:             $new->roundCorners($round, $round);
46:             $new->compositeImage($this->_image->imagick, Imagick::COMPOSITE_OVER, 1, 1);
47:             $this->_image->imagick->clear();
48:             $this->_image->imagick->addImage($new);
49:             $new->destroy();
50:         }
51: 
52:         // If we have a background other than 'none' we need to
53:         // compose two images together to make sure we *have* a background. We
54:         // can't use border because we don't want to extend the image area, just
55:         // fill in the parts removed by the rounding.
56:         if ($this->_params['background'] != 'none') {
57:             $size = $this->_image->getDimensions();
58:             $new = new Imagick();
59:             $new->newImage($size['width'],
60:                            $size['height'],
61:                            $this->_params['background']);
62:             $new->setImageFormat($this->_image->getType());
63:             $new->compositeImage($this->_image->imagick, Imagick::COMPOSITE_OVER, 0, 0);
64:             $this->_image->imagick->clear();
65:             $this->_image->imagick->addImage($new);
66:             $new->destroy();
67:         }
68: 
69:         // Reset width/height since these might have changed
70:         $this->_image->clearGeometry();
71: 
72:         return true;
73:     }
74: 
75: }
API documentation generated by ApiGen