Заметки
программиста
 
Популярные статьи
 
Полезные ссылки

Изменение размеров картинки ResizeImageGet

13.09.2019
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

Примеры вызова CFile::ResizeImageGet

$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'].'" />';

Если исходная картинка меньше, чем необходимо ужать или обрезать, то в папку /upload/resize_cache/ ничего не попадает. Соответственно $file тоже пустой и чтобы не было ошибок при выводе, надо проверять полученный массив $file.

<?
if(!isset($file["src"] ) ):
	$file["src"]=путь к старой картинке; 
endif;
?>

 
Об этом блоге

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