Для простого создания миниатюр в шаблонах идеально подходит CFile::ResizeImageGet.
Но если вам нужно наложить водяной знак, маску, повернуть изображение или сохранить результат в конкретный файл — используйте класс Bitrix\Main\File\Image.
1. Загрузка изображения
use Bitrix\Main\File\Image;
use Bitrix\Main\Application;
$docRoot = Application::getDocumentRoot();
$sourcePath = $docRoot . '/upload/original.jpg';
$image = new Image($sourcePath);
// Получаем информацию
$info = $image->getInfo(); // [width, height, format, ...]2. Ресайз (Изменение размера)
use Bitrix\Main\File\Image;
// Пропорциональное уменьшение до 800x600
$image->resize(800, 600, Image::RESIZE_PROPORTIONAL);
// Точная обрезка (кроп) по центру
$image->resize(300, 300, Image::RESIZE_EXACT);3. Наложение водяного знака (Watermark)
Это то, чего так не хватает в стандартном ResizeImageGet без модуля инфоблоков.
$watermarkPath = $docRoot . '/images/logo.png';
$watermark = new Image($watermarkPath);
// Накладываем водяной знак
// Параметры: (Image $watermark, $alpha, $position, $padding)
$image->drawWatermark(
$watermark,
0.5, // Прозрачность (0-1)
Image::WATERMARK_POSITION_BOTTOM_RIGHT,
10 // Отступ в пикселях
);4. Сохранение результата
$destinationPath = $docRoot . '/upload/processed.jpg';
// Сохраняем с качеством 95%
$image->save($destinationPath, 95);
echo "Картинка обработана и сохранена!";Использование маски
Можно сделать картинку круглой, наложив PNG-маску.
$maskPath = $docRoot . '/images/circle_mask.png';
$mask = new Image($maskPath);
$image->drawMask($mask);Вывод:
Класс Bitrix\Main\File\Image — это мощная объектно-ориентированная обертка над библиотекой GD (или Imagick).
Он предоставляет удобный интерфейс для сложной обработки графики на сервере, позволяя решать задачи, недоступные стандартным хелперам Битрикс.
Bitrix\Main\File\Image, ресайз D7, водяной знак битрикс, обработка фото, resize, crop, mask, качество изображения.