1С-Битрикс: Масштабирование изображения

Добрый день, друзья 🙂
Думаю, каждый из вас сталкивался с такой проблемой как корректное масштабирование изображения. Дабы красиво встроить изображение в дизайн сайта, приходится постараться с пропорционированием изображения. Можно обойтись ручным способом, а именно, взять за эталон одну из сторон изображения и вычислить коэффициент пропорции, а затем и вычислить длину другой стороны, есть и другие способы. Однако, не будем изобретать велосипед, когда до нас его уже изобрели :), а воспользуемся встроенным механизмом битрикса, а имя его ResizeImageGet.

Механизм рассмотрим на примере изображений разделов каталога товаров. Используем компонент «Список разделов». На входе имеем выборку разделов информационного блока с элементами, среди свойств которых и интересующие нас изображения. Пусть $arSection будет один элемент, тогда вытащим его картинку:

<?$arFileTmp = CFile::ResizeImageGet(
   $arSection["PICTURE"],
   array("width" => 100, 'height' => 100),
   BX_RESIZE_IMAGE_PROPORTIONAL,
   true
   );
?>

Выходную картинку хотим получить размером 100х100. В объявленной переменной получим массив, содержащий:

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

Типы масштабирования:
BX_RESIZE_IMAGE_EXACT — масштабирует в прямоугольник $arSize без сохранения пропорций;
BX_RESIZE_IMAGE_PROPORTIONAL — масштабирует с сохранением пропорций, размер ограничивается $arSize;
BX_RESIZE_IMAGE_PROPORTIONAL_ALT — масштабирует с сохранением пропорций, размер ограничивается $arSize, улучшенна обработка вертикальных картинок.
Остается в нужном нам месте вывести изображение:

<img src="<?=$arFileTmp["src"]?>" height="<?=$arFileTmp["height"]?>" width="<?=$arFileTmp["width"]?>"/>

P.S. Остальное в документации, там много чего интересного еще 🙂

При перепубликации активная ссылка на этот блог обязательна.
Поблагодарить автора 🙂
 руб.