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 | Тип масштабирования:
| |
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