Документация для разработчиков
Темная тема

ResizeImage

Описание и параметры

CFile::ResizeImage(
	array File,
	array Size,
	resizeType = BX_RESIZE_IMAGE_PROPORTIONAL
)

Метод является оберткой ResizeImageFile. Изменяет размеры графического файла. Статический метод.

Параметры

Параметр Описание
Fileмассив файла
Size Массив вида array("width" => $width, "height" => $height)); оба ключа обязательны.
resizeTypeтип масштабирования:
  • BX_RESIZE_IMAGE_EXACT - масштабирует в прямоугольник $arSize без сохранения пропорций;
  • BX_RESIZE_IMAGE_PROPORTIONAL - масштабирует с сохранением пропорций, размер ограничивается $arSize;
  • BX_RESIZE_IMAGE_PROPORTIONAL_ALT - масштабирует с сохранением пропорций, размер ограничивается $arSize, улучшенная обработка вертикальных картинок.

Примеры использования

Создание миниатюр "на лету":

	$renderImage = CFile::ResizeImageGet($arResult["DETAIL_PICTURE"], Array("width" => $newWidth, "height" => $newHeight));
	echo CFile::ShowImage($renderImage['src'], $newWidth, $newHeight, "border=0", "", true);

Масштабирование изображения с последующим его сохранением:

// проверяем тип и размер файла.
$checkfile = CFile::CheckFile($arFile,400000,'image/','gif,png,jpeg,jpg');
if(strlen($checkfile) > 0) 
{
	$strError .= $arFile['name'].': '.$strError.'<br>';
} 
else 
{
	// масштабируем изображение
	CFile::ResizeImage(
		&$arFile, // путь к изображению, сюда же будет записан уменьшенный файл
		array(
			"width" => $newWidth,  // новая ширина
			"height" => $newHeight // новая высота
		),
		BX_RESIZE_IMAGE_EXACT // метод масштабирования. обрезать прямоугольник без учета пропорций
		);
	// сохраняем уменьшенное изображение. 
	$fileId = CFile::SaveFile($arFile, $IBlockType);
}


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
1
Василий
Немного обновлю MyClass, ибо в версии Управление сайтом 14.9.3 нужно сделать правку

Код
function OnBeforeIBlockElementHandler(&$arFields) {

   foreach($arFields[PROPERTY_VALUES][77] as &$file):
      CFile::ResizeImage(
        $file[VALUE],
        array("width" => "1000", "height" => "1000"),
        BX_RESIZE_IMAGE_PROPORTIONAL);
   endforeach;
}
0
sgromkov
Задача: При добавлении элемента, пропорционально уменьшать картинки, добавленные как пользовательское свойство.

Решение:

Перед решением поставленной задачи, убедитесь, что у вас есть ftp-доступ к файлу /bitrix/php_interface/init.php и заданы права на редактирование элемента "777".

Если такого файла нет, создайте его по указанному адресу:  /bitrix/php_interface/

В файл /bitrix/php_interface/init.php добавляем обработчик события "добавления элемента" - "OnBeforeIBlockElementAdd". В функции-обработчике пробегаемся по свойству типа "файл" и ресайзим каждую картинку.

Копируем код ниже и заменяем значение "28" на id вашего свойства. Данный код, будет работать как для множественного, так и для одиночного свойства типа "файл".

Код
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", Array("MyClass", "OnBeforeIBlockElementAddHandler")); 

class MyClass
{
    function OnBeforeIBlockElementAddHandler(&$arFields)
    {
    foreach($arFields[PROPERTY_VALUES][28] as &$file):
       CAllFile::ResizeImage(
         $file, 
         array("width" => "200", "height" => "200"), 
         BX_RESIZE_IMAGE_PROPORTIONAL);
    endforeach;
    }
}
 
2
Наталья Решетина
ф-ии прописаны в файле
Код
\bitrix\modules\main\classes\general\main.php


Для изменения размера изображения можно воспользоваться функцией ResizeImageGet()
например:
Код
$image_resize = CFile::ResizeImageGet($arResult["DETAIL_PICTURE"], array("width" => $wdth, "height" => $hght));?>
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх