Работа с изображениями, класс JImage

        $thumbWidth = 800;
        $thumbHeight = 600;
        $image = JPATH_SITE . '/images/pict.jpg';
        $thumb = JPATH_SITE . '/images/thumb/pict.jpg';

        if(!JFile::exists($thumb)){
            try {
                if(!JFolder::exists(dirname($thumb))) JFolder::create(dirname($thumb));
                $properties = JImage::getImageFileProperties($image);
                if($properties->width > $thumbWidth){
                    $imgObject = new JImage($image);
                    $imgObject->resize($thumbWidth, $thumbHeight, false, JImage::SCALE_FIT);
                    $imgObject->filter('backgroundfill', array('color' => "#fdfaf9"));
                    $imgObject->toFile($thumb);
                }
            } catch (Exception $e) {
                JFactory::getApplication()->enqueueMessage(JText::sprintf('Имеем ошибку: ', $image, $e->getMessage()));
            }
        }
        $thumb = JUri::base(true).str_replace(JPATH_ROOT, '', JFile::exists($thumb) ? $thumb : $image);

 

Константы:

JImage::SCALE_FILL Непропорциональное масштабирование
JImage::SCALE_INSIDE Масштабирование, при котором результат будет вписан в заданные размеры
JImage::SCALE_OUTSIDE Масштабирование, при котором заданные размеры будут вписаны в результат
JImage::CROP Вырезает кусок (из центра?) без масштабирования
JImage::CROP_RESIZE Масштабирование с подрезкой краев для полного заполнения
JImage::SCALE_FIT Масштабирование с добавлением полей. Цвет полей можно задать фильтром (см. пример выше).