From da262e002b45fdb1e263dc5b124cc1b40764387e Mon Sep 17 00:00:00 2001 From: "Michael J. Rubinsky" Date: Sat, 25 Dec 2010 00:44:25 -0500 Subject: [PATCH] Add a square thumbnail generator --- ansel/lib/ImageGenerator.php | 5 --- ansel/lib/ImageGenerator/SquareThumb.php | 57 ++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 ansel/lib/ImageGenerator/SquareThumb.php diff --git a/ansel/lib/ImageGenerator.php b/ansel/lib/ImageGenerator.php index 288a2f047..a2bf8ed82 100644 --- a/ansel/lib/ImageGenerator.php +++ b/ansel/lib/ImageGenerator.php @@ -22,11 +22,6 @@ * See the enclosed file COPYING for license information (GPL). If you * did not receive this file, see http://www.fsf.org/copyleft/gpl.html. * - * Copyright 2007-2010 The Horde Project (http://www.horde.org/) - * - * See the enclosed file COPYING for license information (GPL). If you - * did not receive this file, see http://www.fsf.org/copyleft/gpl.html. - * * @author Michael J. Rubinsky * @package Ansel */ diff --git a/ansel/lib/ImageGenerator/SquareThumb.php b/ansel/lib/ImageGenerator/SquareThumb.php new file mode 100644 index 000000000..9b961ca07 --- /dev/null +++ b/ansel/lib/ImageGenerator/SquareThumb.php @@ -0,0 +1,57 @@ + + * @package Ansel + */ +class Ansel_ImageGenerator_SquareThumb extends Ansel_ImageGenerator +{ + public function __construct($params) + { + parent::__construct($params); + $this->title = _("Square Thumbnails"); + } + + /** + * + * @return Horde_Image + */ + protected function _create() + { + // Take the largest requested dimension + if (empty($this->_dimensions['width'])) { + $size = max($GLOBALS['conf']['thumbnail']['height'], $GLOBALS['conf']['thumbnail']['width']); + } else { + $size = max($this->_dimensions['width'], $this->_dimensions['height']); + } + + // Use smartcrop algorithm if we have it, otherwise a plain center crop. + if (Ansel::isAvailable('SmartCrop')) { + $this->_image->addEffect('SmartCrop', array('width' => $size, 'height' => $size)); + } else { + $this->_image->addEffect('CenterCrop', array('width' => $size, 'height' => $size)); + } + $this->_image->applyEffects(); + + if ($GLOBALS['conf']['thumbnail']['unsharp'] && Ansel::isAvailable('Unsharpmask')) { + try { + $this->_image->addEffect('Unsharpmask', + array('radius' => $GLOBALS['conf']['thumbnail']['radius'], + 'threshold' => $GLOBALS['conf']['thumbnail']['threshold'], + 'amount' => $GLOBALS['conf']['thumbnail']['amount'])); + $this->_image->applyEffects(); + } catch (Horde_Image_Exception $e) { + throw new Ansel_Exception($e); + } + } + + return $this->_image->getHordeImage(); + } + +} -- 2.11.0