Масштабування зображень дозволяє отримувати потрібний розмір зображення з вихідного шляхом стиснення зображення на стороні сервера, або засобами браузера. Стискаючи зображення засобами браузера, ми маємо суттєві недоліки, це те, що файл зображення передається у вихідному вигляді, крім усього іншого, ми створюємо додаткове навантаження для браузера, щоб той в свою чергу прорахував масштаби, перш ніж показувати його. Тепер поговоримо про альтернативний, на мій погляд, метод масштабування зображень.

Стискати зображення до потрібних розмірів більш раціонально на стороні сервера, зручність в тому, що передаватися користувачеві буде зображення потрібних розмірів, а це значить, менше часу на передачу файлів, а так само менше навантаження на браузер користувача. Крім усього іншого, мініатюри можна створювати динамічно, без будь-яких додаткових маніпуляцій вами при завантаженні зображення на сервер. Файли зображення можуть мати різні співвідношення сторін, тому мініатюри так само можна центрувати по вертикалі в межах блоку. Погодьтеся дуже зручно.

Так як мова йде про масштабування зображень в системі Bitrix, то для цих цілей в системі передбачений спеціальний метод ResizeImageGet, який є методом класу CFile.

Трохи про роботу даного методу. Даний метод створює мініатюру зображення зазначених розмірів, і розміщує їх у директорію /upload/resize_cache/шлях.

Механізм роботи такий, що при першому зверненні до зображення, картинка генерується в режимі реального часу, для всіх подальших звернень, зображення буде віддаватися з директорії.

Синтаксис:

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
);

Параметри:

  • 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 (“name” = > sharpen, precision => 15)). Фільтрів поки один — sharpen. Задавати його не обов’язково — буде ініціалізований автоматом. Використовується для наведення різкості у мініатюр.
  • Immediate — Прапор передається в обробник події OnBeforeResizeImage, за змістом означає масштабування безпосередньо при виклику методу. Оброблювач в принципі може виконувати відкладене масштабування.
  • jpgQuality — Число, яке встановлює у відсотках якість JPG при масштабуванні. Чим більше значення, тим вище якість і більше розмір файлу зображення.

Метод повертає масив виду:

array(
‘src’, // шлях до зменшеної картинці щодо кореня сайту.
‘width’, // Якщо bInitSizes = true ширина зменшеною картинки, інакше 0.
‘height’, // Якщо bInitSizes = true висота зменшеною картинки, інакше 0.
)

Приклад:

Fetch();
$arImg = CFile::ResizeImageGet(
$arUser[“PERSONAL_PHOTO”],
array(‘width’ => 60, ‘height’ => 60),
BX_RESIZE_IMAGE_PROPORTIONAL_ALT,
true
);
?>

Додав: htmaker, 02.09.2015 р.
(1 голосів, середній: 4,00 з 5)

Завантаження…

Діліться з друзями:

См. також:


Налаштування часу у VMBitrix
Рубрика: Bitrix, Linux

Видалення «кинутих» кошиків в системі Бітрікс
Рубрика: Bitrix

Використання highload-блоків в Bitrix
Рубрика: Bitrix

Як виконати SQL запит в Bitrix
Рубрика: Bitrix

Як підрахувати кількість елементів в Bitrix?
Рубрика: Bitrix

Виключаємо користувача з ID=1 групи адміністраторів в Bitrix
Рубрика: Bitrix

Як скинути пароль адміністратора у Bitrix?
Рубрика: Bitrix

SQL-запити в бітрікс
Рубрика: Bitrix

Робота з параметрами модулів зберігаються в базі
Рубрика: Bitrix