Здравствуйте, у меня плагин обрезает фон картинок так, что они теряют пропорции, которые указаны в настройках джш. Можно как-то отключить обрезание пустого фона?
Если вдруг кому интересно, решил свой вопрос изменив метод handleImage, убрав строки, которые отвечают за обрезку фона:
function handleImage(string $path_full, array $options): void
{
$widthFit = $options['widthFit'];
$heightFit = $options['heightFit'];
$jversion = new Version();
if (version_compare($jversion->getShortVersion(), '4.0', '<')) {
// only for Joomla 3.x
$jshopConfig = JSFactory::getConfig();
} else {
// Joomla 4
$jshopConfig = \JSFactory::getConfig();
}
list($width, $height, $type, $attr) = getimagesize($path_full);
$manager = JInterventionimage::getInstance(['driver' => 'imagick']);
//
https://github.com/Intervention/image/issues/551 Transparency on PNG issue
$tmp_file = $manager->make($path_full);
$img = $manager->canvas($tmp_file->width(), $tmp_file->height(), '#ffffff');
$img->insert($tmp_file);
// Убираем обрезку лишнего фона
// $img->trim('top-left', null, 20, 50);
//Делаем изображения квадратными
if ($this->params->get('square_image', 0) == 1)
{
$width = $img->getWidth();
$height = $img->getHeight();
$ratio = $width / $height;
if ($ratio != 1)
{
if ($width > $height)
{
//http://image.intervention.io/api/resizeCanvas
$new_height = $width;
$img->resizeCanvas($width, $new_height, 'center', false, '#ffffff');
}
elseif ($height > $width)
{
$new_width = $height;
$img->resizeCanvas($new_width, $height, 'center', false, '#ffffff');
}
if ($heightFit > $widthFit)
{
$widthFit = $heightFit;
}
elseif ($widthFit > $heightFit)
{
$heightFit = $widthFit;
}
}
}
// Если оба значения NULL - не меняем размер, переходим к сохранению
if (!is_null($widthFit) || !is_null($heightFit))
{
// resize the image so that the largest side fits within the limit; the smaller
// side will be scaled to maintain the original aspect ratio
//
https://image.intervention.io/v2/api/resize $img->resize($widthFit, $heightFit, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
});
}
$img->save($options['savepath'] . '/' . $options['new_file_name'] . '.' . $options['new_file_format'], $options['image_quality'], $options['new_file_format']);
}