public function perform(Zend_Image_Adapter_Gd $adapter, Zend_Image_Action_Resize $resize) { $handle = $adapter->getHandle(); $newY = $resize->getYAmountCalculated(); $newX = $resize->getXAmountCalculated(); //if a dimension is 0, resize is proportionate to other dimension //if proportions are constrained and both dimensions are specified, //ImageMagick uses the smallest to constrain // //Note the fit parameter only works if the image is being made SMALLER //@TODO: implement constraints manually for images being made larger $fit = false; if ($resize->hasConstrainedProportions() && $newX > 0 && $newY > 0) { $fit = true; } // $handle->resizeImage($newX, $newY, $resize->getFilter(), 1, $fit); $newImg = imagecreatetruecolor($newX, $newY); imagecopyresampled($newImg, $handle, 0, 0, 0, 0, $newX, $newY, $adapter->getWidth(), $adapter->getHeight()); return $newImg; }
public function perform(Zend_Image_Adapter_Gd $adapter, Zend_Image_Action_Mirror $rotate) { $handle = $adapter->getHandle(); $sizeX = $adapter->getWidth(); $sizeY = $adapter->getHeight(); $successFlop = true; if ($rotate->flop()) { $handleNew = imagecreatetruecolor($sizeX, $sizeY); $successFlop = imagecopyresampled($handleNew, $handle, 0, 0, $sizeX - 1, 0, $sizeX, $sizeY, 0 - $sizeX, $sizeY); $handle = $handleNew; } $successFlip = true; if ($rotate->flip()) { $handleNew = imagecreatetruecolor($sizeX, $sizeY); $successFlip = imagecopyresampled($handleNew, $handle, 0, 0, 0, $sizeY - 1, $sizeX, $sizeY, $sizeX, 0 - $sizeY); $handle = $handleNew; } if (!$successFlop || !$successFlip) { require_once 'Zend/Image/Exception'; throw new Zend_Image_Exception('Was not able to mirror image as specified'); } return $handle; }