Главная страница / Блог / CFile::ResizeImageGet — уменьшение изображений в 1С-Битрикс
1С-Битрикс

CFile::ResizeImageGet — уменьшение изображений в 1С-Битрикс

30 июня 2026 7 минут чтения 3022 просмотров

Оптимизация изображений — один из самых простых и эффективных способов ускорить загрузку сайта. Чем меньше размер файлов, тем быстрее открываются страницы, что положительно влияет как на пользовательский опыт, так и на показатели Core Web Vitals.

В 1С-Битрикс для изменения размеров изображений предусмотрен встроенный метод CFile::ResizeImageGet() . Он автоматически создает уменьшенную копию исходного файла, сохраняет ее в кэш и при последующих запросах сразу возвращает готовое изображение без повторной обработки.

Именно поэтому использовать этот метод рекомендуется практически везде, где изображение выводится на сайте: в списках новостей, карточках товаров, баннерах, галереях и других разделах.

Использование CFile::ResizeImageGet()

Общий синтаксис метода выглядит следующим образом:

<?
$renderImg = CFile::ResizeImageGet(
    ID_КАРТИНКИ,
    [
        "width" => 300,
        "height" => 200
    ],
    BX_RESIZE_IMAGE_PROPORTIONAL_ALT,
    false
);
?>

<img src="<?=$renderImg["src"]?>" alt="">

Метод возвращает массив с информацией о созданной уменьшенной копии изображения. Для вывода картинки обычно используется значение $renderImg["src"].

Что можно передавать в ResizeImageGet()

В качестве первого параметра можно использовать не только ID файла. Чаще всего встречаются следующие варианты:

  • $arResult["PREVIEW_PICTURE"];
  • $arResult["DETAIL_PICTURE"];
  • ID файла из свойства инфоблока;
  • результат CFile::GetFileArray().

Главное условие — изображение должно быть зарегистрировано в таблице b_file.

Типы масштабирования

Метод поддерживает несколько режимов изменения размеров изображения.

BX_RESIZE_IMAGE_EXACT

Изображение масштабируется строго под указанный размер. Если пропорции не совпадают, лишние части будут обрезаны.

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

BX_RESIZE_IMAGE_PROPORTIONAL

Изображение уменьшается с сохранением пропорций. Размер никогда не превысит указанные ширину и высоту.

BX_RESIZE_IMAGE_PROPORTIONAL_ALT

На практике именно этот вариант использую чаще всего. Он корректнее работает с вертикальными изображениями, не обрезает фотографию и практически не портит композицию кадра.

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

Вывод изображения в теге img

<?
$renderImg = CFile::ResizeImageGet(
    $arResult["PREVIEW_PICTURE"],
    [
        "width" => 300,
        "height" => 200
    ],
    BX_RESIZE_IMAGE_PROPORTIONAL_ALT,
    false
);
?>

<img src="<?=$renderImg["src"]?>" alt="<?=$arResult["NAME"]?>">

Использование в background-image

<?
$file = CFile::GetFileArray(
    $arResult["DISPLAY_PROPERTIES"]["ATT_IMG"]["VALUE"]
);

$renderImg = CFile::ResizeImageGet(
    $file,
    [
        "width" => 300,
        "height" => 200
    ],
    BX_RESIZE_IMAGE_PROPORTIONAL_ALT,
    false
);
?>

<div style="background-image:url('<?=$renderImg["src"]?>')"></div>

Где хранятся уменьшенные изображения

После первого обращения к изображению Битрикс создает его уменьшенную копию и помещает ее в каталог:

/upload/resize_cache/

При последующих запросах система больше не выполняет изменение размеров, а сразу использует уже готовый файл из кэша. Благодаря этому обработка происходит только один раз.

Когда ResizeImageGet() не подойдет

Метод работает только с файлами, которые зарегистрированы в системе хранения файлов Битрикс. Если изображение находится на внешнем сервере, CDN или выводится по произвольному URL, воспользоваться CFile::ResizeImageGet() не получится.

Для таких случаев потребуется сначала получить файл в систему Битрикс либо использовать сторонние библиотеки обработки изображений.

Можно ли получить WebP

Сам по себе CFile::ResizeImageGet() изменяет только размеры изображения. Формат файла при этом остается прежним.

Если необходимо дополнительно уменьшить размер файлов, рекомендую использовать автоматическую конвертацию изображений в WebP или AVIF. Совместное использование ResizeImageGet() и современных форматов изображений позволяет добиться максимальной скорости загрузки сайта.

Метод CFile::ResizeImageGet() остается одним из самых полезных инструментов при разработке сайтов на 1С-Битрикс. Он позволяет автоматически создавать уменьшенные копии изображений, снижает нагрузку на сервер и избавляет от необходимости хранить несколько версий одной и той же картинки вручную.

Практически на каждом проекте имеет смысл выводить изображения именно через этот метод, а не использовать оригинальные файлы. Это положительно влияет как на скорость загрузки страниц, так и на общий объем передаваемых данных.

Комментарии

Будем рады вашему мнению и вопросам по статье.