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:  * Effect for creating a polaroid looking image.
 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_PolaroidImage extends Horde_Image_Effect
11: {
12:     /**
13:      * Valid parameters for the polaroid effect
14:      *
15:      * resize_height    -    The height that each individual thumbnail
16:      *                       should be resized to before composing on the image.
17:      *
18:      * background       -    The color of the image background.
19:      *
20:      * angle            -    Angle to rotate the image.
21:      *
22:      * shadowcolor      -    The color of the image shadow.
23:      */
24: 
25:     /**
26:      * @var array
27:      */
28:     protected $_params = array('background' => 'none',
29:                                'angle' => 0,
30:                                'shadowcolor' => 'black');
31: 
32:     /**
33:      * Create the effect
34:      *
35:      */
36:     public function apply()
37:     {
38:         if (!method_exists($this->_image->imagick, 'polaroidImage') ||
39:             !method_exists($this->_image->imagick, 'trimImage')) {
40:                 throw new Horde_Image_Exception('Your version of Imagick is not compiled against a recent enough ImageMagick library to use the PolaroidImage effect.');
41:         }
42: 
43:         // This determines the color of the underlying shadow.
44:         $this->_image->imagick->setImageBackgroundColor(new ImagickPixel($this->_params['shadowcolor']));
45:         $this->_image->imagick->polaroidImage(new ImagickDraw(), $this->_params['angle']);
46: 
47: 
48:         // We need to create a new image to composite the polaroid over.
49:         // (yes, even if it's a transparent background evidently)
50:         $size = $this->_image->getDimensions();
51:         $imk = new Imagick();
52:         $imk->newImage($size['width'], $size['height'], $this->_params['background']);
53:         $imk->setImageFormat($this->_image->getType());
54:         $result = $imk->compositeImage($this->_image->imagick, Imagick::COMPOSITE_OVER, 0, 0);
55:         $this->_image->imagick->clear();
56:         $this->_image->imagick->addImage($imk);
57:         $imk->destroy();
58: 
59:         return true;
60:     }
61: 
62: }
API documentation generated by ApiGen