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

ResizeImageGet

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

array CFile::ResizeImageGet( 
	mixed file, 
	array arSize, 
	const resizeType = BX_RESIZE_IMAGE_PROPORTIONAL, 
	bool bInitSizes = false, 
	array arFilters = false, 
	bool bImmediate = false, 
	bool jpgQuality = false
); 

Метод уменьшает картинку и размещает уменьшенную копию в папку /upload/resize_cache/путь. Один раз уменьшив изображение получаем физический файл, который позволяет при последующих обращениях не проводить операции по уменьшению изображения. При следующем вызове метод вернет путь к уменьшенному файлу. Статический метод.

Параметры

Параметр Описание С версии
file Идентификатор файла из таблицы b_file или массив описания файла (Array(FILE_NAME, SUBDIR, WIDTH, HEIGHT, CONTENT_TYPE)), полученный методом GetFileArray.
Size Массив в виде Array("width"=>WIDTH, "height"=>HEIGHT) со значениями ширины и высоты для уменьшаемой картинки. Оба ключа обязательны.
resizeType Тип масштабирования:
  • BX_RESIZE_IMAGE_EXACT - масштабирует в прямоугольник $arSize c сохранением пропорций, обрезая лишнее;
  • BX_RESIZE_IMAGE_PROPORTIONAL - масштабирует с сохранением пропорций, размер ограничивается $arSize;
  • BX_RESIZE_IMAGE_PROPORTIONAL_ALT - масштабирует с сохранением пропорций за ширину при этом принимается максимальное значение из высоты/ширины, размер ограничивается $arSize, улучшенная обработка вертикальных картинок.
InitSizes Флаг возвращения в результирующем массив размеров измененной картинки. True - возвращает, false - нет
Filters Массив массивов для постобработки картинки с помощью фильтров: array(array("name" => "sharpen", "precision" => 15)). Фильтров пока один - sharpen. Задавать его не обязательно - будет инициализирован автоматом. Используется для наведения резкости у миниатюр. 10.0.4
Immediate Флаг передается в обработчик события OnBeforeResizeImage, по смыслу означает масштабирование непосредственно при вызове метода. Обработчик в принципе может выполнять отложенное масштабирование.12.0.10
jpgQuality Число, устанавливающее в процентах качество JPG при масштабировании. Чем больше значение, тем выше качество и больше размер файла изображения.12.5.0

Возвращаемое значение

Метод возвращает массив вида:

array(
	'src',  // путь к уменьшенной картинке относительно корня сайта.
	'width',  // Если bInitSizes = true ширина уменьшенной картинки, иначе 0.
	'height',  // Если bInitSizes = true высота уменьшенной картинки, иначе 0.
)

В случае ошибки возвращает false.

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

//$uID - идентификатор пользователя
$uDBInfo = CUser::GetByID($uID);
if ($uInfo = $uDBInfo->GetNext())
{
	if ($uInfo['PERSONAL_PHOTO'])
	{
		$file = CFile::ResizeImageGet($uInfo['PERSONAL_PHOTO'], array('width'=>150, 'height'=>150), BX_RESIZE_IMAGE_PROPORTIONAL, true);                
		$img = '<img src="'.$file['src'].'" width="'.$file['width'].'" height="'.$file['height'].'" />';
		$uInfo['PERSONAL_PHOTO'] = $img;
	}
		$arResult['ITEMS'][$k]['USER_INFO'] = $uInfo;
}

Наложить водяной знак можно таким образом:

$arWaterMark = Array(
	array(
		"name" => "watermark",
		"position" => "bottomright", // Положение
		"type" => "image",
		"size" => "real",
		"file" => $_SERVER["DOCUMENT_ROOT"].'/upload/copy.png', // Путь к картинке
		"fill" => "exact",
	)
);
$arFileTmp = CFile::ResizeImageGet(
	$arElement["DETAIL_PICTURE"],
	array("width" => 250, "height" => 127),
	BX_RESIZE_IMAGE_EXACT,
	true,
	$arWaterMark
);


© «Битрикс», 2001-2024, «1С-Битрикс», 2024