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 );
Сообщение не промодерировано, возможны ошибки и неточности.
|
Готовый метод для сохранения картинки по ссылке, с возможностью изменения размера и наложения watermark
|
Сообщение не промодерировано, возможны ошибки и неточности.
|
||
| ||
nezhda
|
||
Случалось, что автоматически инициализируемый фильтр sharpen оставлял артефакты на PNG с прозрачностью. Чтобы избежать этого, можно задать precision равным нулю
| ||
Александр Леонов
|
Для изменения размера watermark'а "fill" => "resize" и "coefficient" => число
|
Александр Семеритов
|
Чтобы работал 'fill'=>'repeat', в параметрах не должно быть 'size'=>'real'
|
Вячеслав Зыков
|
||
Если исходная картинка меньше, чем необходимо ужать, то в папку /upload/resize_cache/ ничего не попадает. Соответственно $file тоже пустой и картинка может не появляться. Приходится проверять попало ли что-то в массив:
| ||
Михаил
|
||
Ресайз и вывод дополнительных фотографий элементов (more_photo):
| ||
Savelov
|
scifi
|
diesel
|
||
Ещё один пример "динамическое масштабирование изображения средствами сервера"
----- ReturnSizes - не входит в поставку битрикс, собственная функция (легко пишется по вашим требованиям) | ||
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.