Адаптивное изменение размеров изображений (crop, resize) в OpenCart

Хотя с обработкой изображений в Opencart дела обстоят не очень плохо, но все же, примерно в 50% случаев, возникает необходимость сначала обрезать, а уже потом уменьшать изображения до заданных в настройках размеров. Таким образом, в не зависимости от пропорций исходного изображения, при выводе изображений мы всегда получаем изображение, занимающее максимум от возможного места без белых полей по краям. Это решение будет оптимально если большинство изображений на сайте имеют фон, отличный от белого (наверное актуально в основном для стандартной темы).

Все изображения товаров, категорий и дрю, при выводе будут уменьшены (увеличены) до размеров, заданных в настройках OpenCart

За ресайз изображений в Opencart отвечает класс ModelToolImage, находящийся в catalog/model/tool/image.php.

Вариант 1. Если необходимо, чтобы абсолютно все изображения обрабатывались по нашей схеме, то замените полностью метод resize на

Вариант 2. Если такая обработка подходит не всегда, а только в отдельных случаях, то добавьте следующий код перед определением метода resize

Далее там, где это необходимо — заменить вызов $this->model_tool_image->resize(…), на $this->model_image_tool->myResize(…).

UPD

Вариант 3
OC 2.x, обрезка изображений в квадрат стандартными средствами без белых полей, широких по ширине, высоких по высоте:

system\library\image.php (находим в — public function resize):

Ниже этих строк вставляем:

Готово.

Дополнительно для тех кто хочет чтобы большим изображением был оригинал загруженного фото (заранее подготовленный файл), в файле catalog\controller\product\product.php находим код:

И заменяем его на:

Share this post:

Recent Posts