- create a folder protected/extensions/thumbnailer
- download phpThumb http://phpthumb.sourceforge.net/
- extract to protected/extensions/thumbnailer/phpThumb
- create a file Thumbnailer.php in protected/extensions/thumbnailer
<?php require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'phpThumb'.DIRECTORY_SEPARATOR.'phpthumb.class.php'); class Thumbnailer { private $_phpThumb; public function init() {} public function __construct(){ $this->_phpThumb = new phpThumb(); } public function __call($method, $params){ if (is_object($this->_phpThumb) && get_class($this->_phpThumb) === 'phpthumb') return call_user_func_array(array($this->_phpThumb, $method), $params); else throw new CException(Yii::t('Thumbnailer', 'Can not call a method of a non existent object')); } public function __set($name, $value) { if (is_object($this->_phpThumb) && get_class($this->_phpThumb) === 'phpthumb') $this->_phpThumb->$name = $value; else throw new CException(Yii::t('Thumbnailer', 'Can not set a property of a non existent object')); } public function __get($name){ if (is_object($this->_phpThumb) && get_class($this->_phpThumb) === 'phpthumb') return $this->_phpThumb->$name; else throw new CException(Yii::t('Thumbnailer', 'Can not access a property of a non existent object')); } public function __sleep() {} public function __wakeup() {} }
edit your config/main.php
<?php 'components' => array(... 'thumbnailer' => array( 'class'=>'application.extensions.thumbnailer.Thumbnailer' ), )
create Thumbs
<?php function thumb120x90($src, $dst, $blured = false) { $phpThumb = Yii::app()->thumbnailer; $phpThumb->setSourceFilename($src); $thumbFile = $dst; $phpThumb->setParameter('w', 120); $phpThumb->setParameter('h', 90); $phpThumb->setParameter('zc', 1); if($blured) { $phpThumb->setParameter('fltr', 'blur|15'); } if (!$phpThumb->GenerateThumbnail()) { new CHttpException(400,'Invalid request. Please do not repeat this request again.'); } if (!$phpThumb->RenderToFile($thumbFile)) { new CHttpException(400,'Invalid request. Please do not repeat this request again.'); } } thumb120x90("images/test.jpg", "images/test_thumb.jpg");