Работа с изображениями, класс 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 | Масштабирование с добавлением полей. Цвет полей можно задать фильтром (см. пример выше). |
Удаление хвоста после хештега (добавилось в Joomla 4)
При загрузке картинок через медиа-менеджер (доп.поля к примеру) к пути файла добавляется хвост после хештега. Удалить его можно так:
use Joomla\CMS\Helper\MediaHelper;
...
echo MediaHelper::getCleanMediaFieldValue($image);
где $image - это путь с хвостом.