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

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-2023, «1С-Битрикс», 2023