From 6bf49f72e25fc9131aa8fcf696c3bde999d2ef06 Mon Sep 17 00:00:00 2001 From: "Michael J. Rubinsky" Date: Tue, 26 May 2009 14:53:52 -0400 Subject: [PATCH] Rename the imagick proxy file so it can be autoloaded and so I can start extracting a true Horde_Image_imagick driver. --- framework/Image/lib/Horde/Image/ImagickProxy.php | 446 +++++++++++++++++++++++ framework/Image/lib/Horde/Image/im.php | 1 - framework/Image/lib/Horde/Image/imagick.php | 437 +--------------------- framework/Image/package.xml | 4 +- 4 files changed, 454 insertions(+), 434 deletions(-) create mode 100644 framework/Image/lib/Horde/Image/ImagickProxy.php diff --git a/framework/Image/lib/Horde/Image/ImagickProxy.php b/framework/Image/lib/Horde/Image/ImagickProxy.php new file mode 100644 index 000000000..ca1270bf4 --- /dev/null +++ b/framework/Image/lib/Horde/Image/ImagickProxy.php @@ -0,0 +1,446 @@ + + * @package Horde_Image + */ +class Horde_Image_ImagickProxy +{ + /** + * Instance variable for our Imagick object. + * + * @var Imagick object + */ + protected $_imagick = null; + + /** + * Constructor. Instantiate our imagick object and set some defaults. + */ + public function __construct($width = 1, $height = 1, $bg = 'white', $format = 'png') + { + $this->_imagick = new Imagick(); + $this->_imagick->newImage($width, $height, new ImagickPixel($bg)); + $this->_imagick->setImageFormat($format); + } + + /** + * Clears the current imagick object and reloads it + * with the passed in binary data. + * + * @param string $image_data The data representing an image. + * + * @return mixed true || PEAR_Error + */ + public function loadString($image_data) + { + try { + if (!$this->_imagick->clear()) { + return PEAR::raiseError('Unable to clear the Imagick object'); + } + if (!$this->_imagick->readImageBlob($image_data)) { + return PEAR::raiseError(sprintf("Call to Imagick::readImageBlob failed on line %s of %s", __LINE__, __FILE__)); + } + return true; + } catch (ImagickException $e) { + return PEAR::raiseError($e->getMessage()); + } + } + + /** + * Rotates image as described. Don't pass through since we are not passing + * a ImagickPixel object from PHP4 code. + * + * @param string $bg Background color + * @param integer $angle Angle to rotate + * + * @return mixed true || PEAR_Error + */ + public function rotateImage($bg, $angle) + { + try { + if (!$this->_imagick->rotateImage(new ImagickPixel($bg), $angle)) { + return PEAR::raiseError(sprintf("Call to Imagick::rotateImage failed on line %s of %s", __LINE__, __FILE__)); + } + return true; + } catch (ImagickException $e) { + return PEAR::raiseError($e->getMessage()); + } + } + + /** + * Change image to a grayscale image. + * + * @return mixed true || PEAR_Error + */ + function grayscale() + { + try { + if (!$this->_imagick->setImageColorSpace(Imagick::COLORSPACE_GRAY)) { + return PEAR::raiseError(sprintf("Call to Imagick::setImageColorSpace failed on line %s of %s", __LINE__, __FILE__)); + } + return true; + } catch (ImagickException $e) { + return PEAR::raiseError($e->getMessage()); + } + } + + /** + * Places a string of text on this image with the specified properties + * + * @TODO + * + * @return mixed true || PEAR_Error + */ + function text($string, $x, $y, $font = 'ariel', $color = 'black', $direction = 0, $fontsize = 'small') + { + try { + $pixel = new ImagickPixel($color); + $draw = new ImagickDraw(); + $draw->setFillColor($pixel); + if (!empty($font)) { + $draw->setFont($font); + } + $draw->setFontSize($fontsize); + $draw->setGravity(Imagick::GRAVITY_NORTHWEST); + $res = $this->_imagick->annotateImage($draw, $x, $y, $direction, $string); + $draw->destroy(); + if (!$res) { + return PEAR::raiseError(sprintf("Call to Imagick::annotateImage failed on line %s of %s", __LINE__, __FILE__)); + } + return true; + } catch (ImagickException $e) { + return PEAR::raiseError($e->getMessage()); + } + } + + /** + * @TODO + * + * @return mixed true || PEAR_Error + */ + function circle($x, $y, $r, $color, $fill) + { + try { + $draw = new ImagickDraw(); + $draw->setFillColor(new ImagickPixel($fill)); + $draw->setStrokeColor(new ImagickPixel($color)); + $draw->circle($x, $y, $r + $x, $y); + $res = $this->_imagick->drawImage($draw); + $draw->destroy(); + if (!$res) { + return PEAR::raiseError(sprintf("Call to Imagick::drawImage failed on line %s of %s", __LINE__, __FILE__)); + } + return true; + } catch (ImagickException $e) { + return PEAR::raiseError($e->getMessage()); + } + } + + /** + * @TODO + * + * @return mixed true || PEAR_Error + */ + function polygon($verts, $color, $fill) + { + try { + $draw = new ImagickDraw(); + $draw->setFillColor(new ImagickPixel($fill)); + $draw->setStrokeColor(new ImagickPixel($color)); + $draw->polygon($verts); + $res = $this->_imagick->drawImage($draw); + $draw->destroy(); + if (!$res) { + return PEAR::raiseError(sprintf("Call to Imagick::drawImage failed on line %s of %s", __LINE__, __FILE__)); + } + return true; + } catch (ImagickException $e) { + return PEAR::raiseError($e->getMessage()); + } + } + + /** + * @TODO + * + * @return mixed true || Pear_Error + */ + function rectangle($x, $y, $width, $height, $color, $fill = 'none') + { + try { + $draw = new ImagickDraw(); + $draw->setStrokeColor(new ImagickPixel($color)); + $draw->setFillColor(new ImagickPixel($fill)); + $draw->rectangle($x, $y, $x + $width, $y + $height); + $res = $this->_imagick->drawImage($draw); + $draw->destroy(); + if (!$res) { + return PEAR::raiseError(sprintf("Call to Imagick::drawImage failed on line %s of %s", __LINE__, __FILE__)); + } + return true; + } catch (ImagickException $e) { + return PEAR::raiseError($e->getMessage()); + } + } + + /** + * Rounded Rectangle + * + * + */ + function roundedRectangle($x, $y, $width, $height, $round, $color, $fill) + { + $draw = new ImagickDraw(); + $draw->setStrokeColor(new ImagickPixel($color)); + $draw->setFillColor(new ImagickPixel($fill)); + $draw->roundRectangle($x, $y, $x + $width, $y + $height, $round, $round); + $res = $this->_imagick->drawImage($draw); + } + + /** + * @TODO + * + * @return mixed true || PEAR_Error + */ + function line($x0, $y0, $x1, $y1, $color, $width) + { + try { + $draw = new ImagickDraw(); + $draw->setStrokeColor(new ImagickPixel($color)); + $draw->setStrokeWidth($width); + $draw->line($x0, $y0, $x1, $y1); + $res = $this->_imagick->drawImage($draw); + $draw->destroy(); + if (!$res) { + return PEAR::raiseError(sprintf("Call to Imagick::drawImage failed on line %s of %s", __LINE__, __FILE__)); + } + return true; + } catch (ImagickException $e) { + return PEAR::raiseError($e->getMessage()); + } + } + + /** + * @TODO + * + * @return mixed true || PEAR_Error + */ + function dashedLine($x0, $y0, $x1, $y1, $color, $width, $dash_length, $dash_space) + { + try { + $draw = new ImagickDraw(); + $draw->setStrokeColor(new ImagickPixel($color)); + $draw->setStrokeWidth($width); + $draw->setStrokeDashArray(array($dash_length, $dash_space)); + $draw->line($x0, $y0, $x1, $y1); + $res = $this->_imagick->drawImage($draw); + $draw->destroy(); + if (!$res) { + return PEAR::raiseError(sprintf("Call to Imagick::drawImage failed on line %s of %s", __LINE__, __FILE__)); + } + return true; + } catch (ImagickException $e) { + return PEAR::raiseError($e->getMessage()); + } + } + + /** + * @TODO + * + * @return mixed true || PEAR_Error + */ + function polyline($verts, $color, $width) + { + try { + $draw = new ImagickDraw(); + $draw->setStrokeColor(new ImagickPixel($color)); + $draw->setStrokeWidth($width); + $draw->setFillColor(new ImagickPixel('none')); + $draw->polyline($verts); + $res = $this->_imagick->drawImage($draw); + $draw->destroy(); + if (!$res) { + return PEAR::raiseError(sprintf("Call to Imagick::drawImage failed on line %s of %s", __LINE__, __FILE__)); + } + return true; + } catch (ImagickException $e) { + return PEAR::raiseError($e->getMessage()); + } + } + + /** + * @TODO + * + * @return mixed true || PEAR_Error + */ + function setImageBackgroundColor($color) + { + try { + $res = $this->_imagick->setImageBackgroundColor(new ImagickPixel($color)); + if (!$res) { + return PEAR::raiseError(sprintf("Call to Imagick::setImageBackgroundColor failed on line %s of %s", __LINE__, __FILE__)); + } + return true; + } catch (ImagickException $e) { + return PEAR::raiseError($e->getMessage()); + } + } + + /** + * @TODO + * + * @return mixed true || PEAR_Error + */ + function compositeImage(&$imagickProxy, $constant, $x, $y, $channel = null) + { + try { + $res = $this->_imagick->compositeImage($imagickProxy->getIMObject(), + $constant, + $x, + $y, $channel); + if (!$res) { + return PEAR::raiseError(sprintf("Call to Imagick::compositeImage failed on line %s of %s", __LINE__, __FILE__)); + } + return true; + } catch (ImagickException $e) { + return PEAR::raiseError($e->getMessage()); + } + } + + /** + * @TODO + * + * @return mixed true || PEAR_Error + */ + function addImage(&$imagickProxy) + { + try { + $res = $this->_imagick->addImage($imagickProxy->getIMObject()); + if (!$res) { + return PEAR::raiseError(sprintf("Call to Imagick::drawImage failed on line %s of %s", __LINE__, __FILE__)); + } + return true; + } catch (ImagickException $e) { + return PEAR::raiseError($e->getMessage()); + } + } + + /** + * Add a border to this image. + * + * @param string $color The color of the border. + * @param integer $width The border width + * @param integer $height The border height + * + * @return mixed true || PEAR_Error + * + */ + function borderImage($color, $width, $height) + { + try { + // Jump through all there hoops to preserve any transparency. + $border = $this->_imagick->clone(); + $border->borderImage(new ImagickPixel($color), + $width, $height); + $border->compositeImage($this->_imagick, + constant('Imagick::COMPOSITE_COPY'), + $width, $height); + $this->_imagick->clear(); + $this->_imagick->addImage($border); + $border->destroy(); + return true; + } catch (ImagickException $e) { + return PEAR::raiseError($e->getMessage()); + } + } + + /** + * Return the raw Imagick object + * + * @return Imagick The Imagick object for this proxy. + */ + function &getIMObject() + { + return $this->_imagick; + } + + /** + * Produces a clone of this ImagickProxy object. + * + * @return mixed Horde_Image_ImagickProxy object || PEAR_Error + * + */ + function &cloneIM() + { + try { + $new = new Horde_Image_ImagickProxy(); + $new->clear(); + if (!$new->readImageBlob($this->getImageBlob())) { + return PEAR::raiseError(sprintf("Call to Imagick::readImageBlob failed on line %s of %s", __LINE__, __FILE__)); + } + return $new; + } catch (ImagickException $e) { + return PEAR::raiseError($e->getMessage()); + } + } + + /** + * + */ + function polaroidImage($angle = 0) + { + try { + $bg = new ImagickDraw(); + return $this->_imagick->polaroidImage($bg, $angle); + } catch (ImagickException $e) { + return PEAR::raiseError($e->getMessage()); + } + } + + /** + * Check if a particular method exists in the installed version of Imagick + * + * @param string $methodName The name of the method to check for. + * + * @return boolean + */ + function methodExists($methodName) + { + if (method_exists($this->_imagick, $methodName)) { + return true; + } else { + return false; + } + } + + /** + * Pass through any methods not explicitly handled above. + * Note that any methods that take any Imagick* object as a parameter + * should be called through it's own method as above so we can avoid + * having objects that might throw exceptions running in PHP4 code. + */ + function __call($method, $params) + { + try { + if (method_exists($this->_imagick, $method)) { + $result = call_user_func_array(array($this->_imagick, $method), $params); + } else { + return PEAR::raiseError(sprintf("Unable to execute %s. Your ImageMagick version may not support this feature.", $method)); + } + } catch (ImagickException $e) { + return PEAR::raiseError($e->getMessage()); + } + return $result; + } + +} diff --git a/framework/Image/lib/Horde/Image/im.php b/framework/Image/lib/Horde/Image/im.php index 9bd9baaca..af8f75ab1 100644 --- a/framework/Image/lib/Horde/Image/im.php +++ b/framework/Image/lib/Horde/Image/im.php @@ -89,7 +89,6 @@ class Horde_Image_im extends Horde_Image // images, so use 1x1 for our default if needed. if (Util::loadExtension('imagick')) { ini_set('imagick.locale_fix', 1); - require_once 'Horde/Image/imagick.php'; $this->_width = max(array($this->_width, 1)); $this->_height = max(array($this->_height, 1)); // Use a proxy for the Imagick calls to keep exception catching diff --git a/framework/Image/lib/Horde/Image/imagick.php b/framework/Image/lib/Horde/Image/imagick.php index ca1270bf4..3616bcd02 100644 --- a/framework/Image/lib/Horde/Image/imagick.php +++ b/framework/Image/lib/Horde/Image/imagick.php @@ -1,11 +1,6 @@ * @package Horde_Image */ -class Horde_Image_ImagickProxy +class Horde_Image_imagick { - /** - * Instance variable for our Imagick object. - * - * @var Imagick object - */ - protected $_imagick = null; - - /** - * Constructor. Instantiate our imagick object and set some defaults. - */ - public function __construct($width = 1, $height = 1, $bg = 'white', $format = 'png') - { - $this->_imagick = new Imagick(); - $this->_imagick->newImage($width, $height, new ImagickPixel($bg)); - $this->_imagick->setImageFormat($format); - } - - /** - * Clears the current imagick object and reloads it - * with the passed in binary data. - * - * @param string $image_data The data representing an image. - * - * @return mixed true || PEAR_Error - */ - public function loadString($image_data) - { - try { - if (!$this->_imagick->clear()) { - return PEAR::raiseError('Unable to clear the Imagick object'); - } - if (!$this->_imagick->readImageBlob($image_data)) { - return PEAR::raiseError(sprintf("Call to Imagick::readImageBlob failed on line %s of %s", __LINE__, __FILE__)); - } - return true; - } catch (ImagickException $e) { - return PEAR::raiseError($e->getMessage()); - } - } - - /** - * Rotates image as described. Don't pass through since we are not passing - * a ImagickPixel object from PHP4 code. - * - * @param string $bg Background color - * @param integer $angle Angle to rotate - * - * @return mixed true || PEAR_Error - */ - public function rotateImage($bg, $angle) - { - try { - if (!$this->_imagick->rotateImage(new ImagickPixel($bg), $angle)) { - return PEAR::raiseError(sprintf("Call to Imagick::rotateImage failed on line %s of %s", __LINE__, __FILE__)); - } - return true; - } catch (ImagickException $e) { - return PEAR::raiseError($e->getMessage()); - } - } - - /** - * Change image to a grayscale image. - * - * @return mixed true || PEAR_Error - */ - function grayscale() - { - try { - if (!$this->_imagick->setImageColorSpace(Imagick::COLORSPACE_GRAY)) { - return PEAR::raiseError(sprintf("Call to Imagick::setImageColorSpace failed on line %s of %s", __LINE__, __FILE__)); - } - return true; - } catch (ImagickException $e) { - return PEAR::raiseError($e->getMessage()); - } - } - - /** - * Places a string of text on this image with the specified properties - * - * @TODO - * - * @return mixed true || PEAR_Error - */ - function text($string, $x, $y, $font = 'ariel', $color = 'black', $direction = 0, $fontsize = 'small') - { - try { - $pixel = new ImagickPixel($color); - $draw = new ImagickDraw(); - $draw->setFillColor($pixel); - if (!empty($font)) { - $draw->setFont($font); - } - $draw->setFontSize($fontsize); - $draw->setGravity(Imagick::GRAVITY_NORTHWEST); - $res = $this->_imagick->annotateImage($draw, $x, $y, $direction, $string); - $draw->destroy(); - if (!$res) { - return PEAR::raiseError(sprintf("Call to Imagick::annotateImage failed on line %s of %s", __LINE__, __FILE__)); - } - return true; - } catch (ImagickException $e) { - return PEAR::raiseError($e->getMessage()); - } - } - - /** - * @TODO - * - * @return mixed true || PEAR_Error - */ - function circle($x, $y, $r, $color, $fill) - { - try { - $draw = new ImagickDraw(); - $draw->setFillColor(new ImagickPixel($fill)); - $draw->setStrokeColor(new ImagickPixel($color)); - $draw->circle($x, $y, $r + $x, $y); - $res = $this->_imagick->drawImage($draw); - $draw->destroy(); - if (!$res) { - return PEAR::raiseError(sprintf("Call to Imagick::drawImage failed on line %s of %s", __LINE__, __FILE__)); - } - return true; - } catch (ImagickException $e) { - return PEAR::raiseError($e->getMessage()); - } - } - - /** - * @TODO - * - * @return mixed true || PEAR_Error - */ - function polygon($verts, $color, $fill) - { - try { - $draw = new ImagickDraw(); - $draw->setFillColor(new ImagickPixel($fill)); - $draw->setStrokeColor(new ImagickPixel($color)); - $draw->polygon($verts); - $res = $this->_imagick->drawImage($draw); - $draw->destroy(); - if (!$res) { - return PEAR::raiseError(sprintf("Call to Imagick::drawImage failed on line %s of %s", __LINE__, __FILE__)); - } - return true; - } catch (ImagickException $e) { - return PEAR::raiseError($e->getMessage()); - } - } - - /** - * @TODO - * - * @return mixed true || Pear_Error - */ - function rectangle($x, $y, $width, $height, $color, $fill = 'none') - { - try { - $draw = new ImagickDraw(); - $draw->setStrokeColor(new ImagickPixel($color)); - $draw->setFillColor(new ImagickPixel($fill)); - $draw->rectangle($x, $y, $x + $width, $y + $height); - $res = $this->_imagick->drawImage($draw); - $draw->destroy(); - if (!$res) { - return PEAR::raiseError(sprintf("Call to Imagick::drawImage failed on line %s of %s", __LINE__, __FILE__)); - } - return true; - } catch (ImagickException $e) { - return PEAR::raiseError($e->getMessage()); - } - } - - /** - * Rounded Rectangle - * - * - */ - function roundedRectangle($x, $y, $width, $height, $round, $color, $fill) - { - $draw = new ImagickDraw(); - $draw->setStrokeColor(new ImagickPixel($color)); - $draw->setFillColor(new ImagickPixel($fill)); - $draw->roundRectangle($x, $y, $x + $width, $y + $height, $round, $round); - $res = $this->_imagick->drawImage($draw); - } - - /** - * @TODO - * - * @return mixed true || PEAR_Error - */ - function line($x0, $y0, $x1, $y1, $color, $width) - { - try { - $draw = new ImagickDraw(); - $draw->setStrokeColor(new ImagickPixel($color)); - $draw->setStrokeWidth($width); - $draw->line($x0, $y0, $x1, $y1); - $res = $this->_imagick->drawImage($draw); - $draw->destroy(); - if (!$res) { - return PEAR::raiseError(sprintf("Call to Imagick::drawImage failed on line %s of %s", __LINE__, __FILE__)); - } - return true; - } catch (ImagickException $e) { - return PEAR::raiseError($e->getMessage()); - } - } - - /** - * @TODO - * - * @return mixed true || PEAR_Error - */ - function dashedLine($x0, $y0, $x1, $y1, $color, $width, $dash_length, $dash_space) - { - try { - $draw = new ImagickDraw(); - $draw->setStrokeColor(new ImagickPixel($color)); - $draw->setStrokeWidth($width); - $draw->setStrokeDashArray(array($dash_length, $dash_space)); - $draw->line($x0, $y0, $x1, $y1); - $res = $this->_imagick->drawImage($draw); - $draw->destroy(); - if (!$res) { - return PEAR::raiseError(sprintf("Call to Imagick::drawImage failed on line %s of %s", __LINE__, __FILE__)); - } - return true; - } catch (ImagickException $e) { - return PEAR::raiseError($e->getMessage()); - } - } - - /** - * @TODO - * - * @return mixed true || PEAR_Error - */ - function polyline($verts, $color, $width) - { - try { - $draw = new ImagickDraw(); - $draw->setStrokeColor(new ImagickPixel($color)); - $draw->setStrokeWidth($width); - $draw->setFillColor(new ImagickPixel('none')); - $draw->polyline($verts); - $res = $this->_imagick->drawImage($draw); - $draw->destroy(); - if (!$res) { - return PEAR::raiseError(sprintf("Call to Imagick::drawImage failed on line %s of %s", __LINE__, __FILE__)); - } - return true; - } catch (ImagickException $e) { - return PEAR::raiseError($e->getMessage()); - } - } - - /** - * @TODO - * - * @return mixed true || PEAR_Error - */ - function setImageBackgroundColor($color) - { - try { - $res = $this->_imagick->setImageBackgroundColor(new ImagickPixel($color)); - if (!$res) { - return PEAR::raiseError(sprintf("Call to Imagick::setImageBackgroundColor failed on line %s of %s", __LINE__, __FILE__)); - } - return true; - } catch (ImagickException $e) { - return PEAR::raiseError($e->getMessage()); - } - } - - /** - * @TODO - * - * @return mixed true || PEAR_Error - */ - function compositeImage(&$imagickProxy, $constant, $x, $y, $channel = null) - { - try { - $res = $this->_imagick->compositeImage($imagickProxy->getIMObject(), - $constant, - $x, - $y, $channel); - if (!$res) { - return PEAR::raiseError(sprintf("Call to Imagick::compositeImage failed on line %s of %s", __LINE__, __FILE__)); - } - return true; - } catch (ImagickException $e) { - return PEAR::raiseError($e->getMessage()); - } - } - - /** - * @TODO - * - * @return mixed true || PEAR_Error - */ - function addImage(&$imagickProxy) - { - try { - $res = $this->_imagick->addImage($imagickProxy->getIMObject()); - if (!$res) { - return PEAR::raiseError(sprintf("Call to Imagick::drawImage failed on line %s of %s", __LINE__, __FILE__)); - } - return true; - } catch (ImagickException $e) { - return PEAR::raiseError($e->getMessage()); - } - } - - /** - * Add a border to this image. - * - * @param string $color The color of the border. - * @param integer $width The border width - * @param integer $height The border height - * - * @return mixed true || PEAR_Error - * - */ - function borderImage($color, $width, $height) - { - try { - // Jump through all there hoops to preserve any transparency. - $border = $this->_imagick->clone(); - $border->borderImage(new ImagickPixel($color), - $width, $height); - $border->compositeImage($this->_imagick, - constant('Imagick::COMPOSITE_COPY'), - $width, $height); - $this->_imagick->clear(); - $this->_imagick->addImage($border); - $border->destroy(); - return true; - } catch (ImagickException $e) { - return PEAR::raiseError($e->getMessage()); - } - } - - /** - * Return the raw Imagick object - * - * @return Imagick The Imagick object for this proxy. - */ - function &getIMObject() - { - return $this->_imagick; - } - - /** - * Produces a clone of this ImagickProxy object. - * - * @return mixed Horde_Image_ImagickProxy object || PEAR_Error - * - */ - function &cloneIM() - { - try { - $new = new Horde_Image_ImagickProxy(); - $new->clear(); - if (!$new->readImageBlob($this->getImageBlob())) { - return PEAR::raiseError(sprintf("Call to Imagick::readImageBlob failed on line %s of %s", __LINE__, __FILE__)); - } - return $new; - } catch (ImagickException $e) { - return PEAR::raiseError($e->getMessage()); - } - } - - /** - * - */ - function polaroidImage($angle = 0) - { - try { - $bg = new ImagickDraw(); - return $this->_imagick->polaroidImage($bg, $angle); - } catch (ImagickException $e) { - return PEAR::raiseError($e->getMessage()); - } - } - - /** - * Check if a particular method exists in the installed version of Imagick - * - * @param string $methodName The name of the method to check for. - * - * @return boolean - */ - function methodExists($methodName) - { - if (method_exists($this->_imagick, $methodName)) { - return true; - } else { - return false; - } - } - - /** - * Pass through any methods not explicitly handled above. - * Note that any methods that take any Imagick* object as a parameter - * should be called through it's own method as above so we can avoid - * having objects that might throw exceptions running in PHP4 code. - */ - function __call($method, $params) + public function __construct($params, $context = array()) { - try { - if (method_exists($this->_imagick, $method)) { - $result = call_user_func_array(array($this->_imagick, $method), $params); - } else { - return PEAR::raiseError(sprintf("Unable to execute %s. Your ImageMagick version may not support this feature.", $method)); - } - } catch (ImagickException $e) { - return PEAR::raiseError($e->getMessage()); - } - return $result; + parent::__construct($params, $context); } - -} +} \ No newline at end of file diff --git a/framework/Image/package.xml b/framework/Image/package.xml index 42a1c85f7..0cb81e0bb 100644 --- a/framework/Image/package.xml +++ b/framework/Image/package.xml @@ -65,7 +65,8 @@ http://pear.php.net/dtd/package-2.0.xsd"> - + + @@ -119,6 +120,7 @@ http://pear.php.net/dtd/package-2.0.xsd"> + -- 2.11.0