О web-разработке
и даже немного больше...

Сжатие изображений в битрикс (Bitrix image resizing)

Довольно часто размеры изображений на сайте требуется изменять в связи с необходимостью представления их в публичной части сайта в нужном виде. По этой причине бывает не всегда удобно править все изображения, которые находятся на сайте, особенно когда их прилично много.
Целесообразно выполнять манипуляцию с изображениями программно. Однако изменение размеров изображения требует некоторых аппаратных ресурсов. В свою очередь может повлиять на ожидании получения изображения пользователем. Решением этой проблемы стало хранение однажды сжатого изображения в отведенном каталоге. Повторно уже сжимать изображение не придется, а лишь достать его по нужному пути с хранилища.
Для изменения размеров изображений в системе Bitrix существует метод CFile::ResizeImageGet(). Работает метод довольно просто, при первичном обращении к файлу уменьшает картинку до заданных размеров, далее сжатое изображение размещается в папку /upload/resize_cache/путь. Все последующие запросы при наличии готового файла не будут вызывать процесс сжатия, метод сразу вернёт путь к изображению.

Параметры вызова метода 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
); 

Пример создания миниатюр изображений на Bitrix

Давайте рассмотрим пример использования метода. Предположим, что у нас есть некая переменная с массивом данных элементов $arResult[‘ITEMS’]. Стоит задача перебрать элементы массива, и создать для каждого элемента миниатюру изображения.

foreach ($arResult['ITEMS'] as $k => $v) {
    if ($v['IMAGE']) {
        $res = CFile::ResizeImageGet(
            $v['IMAGE'],
            array(
                'width'  => 50,
                'height' => 50
            ),
            BX_RESIZE_IMAGE_PROPORTIONAL
        );
        $arResult[$k]['IMAGE'] = $res['src'];
    } else {
        $arResult[$k]['IMAGE'] = '/bitrix/templates/.default/im/product-card-no-image-66x50.jpg';
    }
}

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

Опубликован: 20.09.2019 г.

См. также:

«Не удалось установить соединение с сервером. Проверьте …».
Получение Email-адреса покупателя в заказе (Bitrix D7)
Работа с URL-адресами в Bitrix D7
Работа с купонами в Bitrix API
Добавляем пункт меню для списков в админке Битрикс
Диалоговые окна в Bitrix API
Создание инфоблока при установке модуля
Создание копии корзины из заказа на Bitrix D7

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта