Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Crop images class (GD)


 Share

Recommended Posts

imagecrop.php

Что умеет?

1. Ресайз обычный с полями

2. Ресайз по ширине

3. Ресайз по высоте

4. Перевернуть

5. Crop

6. Управление качеством сжатия

7. Управление цветом подложки

Как использовать?

Всивляем могдель, типа

$this->load->model('tool/imagecrop');

Потом вызываем метод resize, например:

1. Уменьшене по ширине с сохранением пропорции

$this->model_tool_imagecrop->resize(
$product_info['image'], // путь к картинке от папки с картинками
100, // ширина миниатюры
0 // высои бугдет раслиина автоматически с сохранением пропорции
);

2. Crop и переворот на 90 градусов

$this->model_tool_imagecrop->resize(
$product_info['image'], // путь к картинке от папки с картинками
500, // ширина миниатюры
500, // высои миниатюры
'0x000000',  // фон подложки черный
100, // качество 100%
true, // блять, не помню зачем я это сгделал. как-то связано с позиционированием относительно полей
90, // первернуть на 90 градусов
array('x1' => 10, 'x2' => 150, 'y1' => 10, 'y2' => 150) // координаты для crop относительно оригинального изображения
);

P.S. Обратите внимание, что resize можно использовать не только для уменьшения, но и для увеличения ;)

  • +1 3
Link to comment
Share on other sites

Вспомнил зачем переменная $cute_borders принимает значения true || false!

При ресайзе могут появляется поля (в зависимости от пропорций):

- если true, то поля будут обрезаны

- если false поля будут на месте (цвет подложки)

  • +1 1
Link to comment
Share on other sites

  • 5 months later...

Nickkam,

Во-первых, OpenCart и ик уменьшает изображения. Это специальный PHP класс для тех, кому надо выполнять дополнительные операции с изображениями.

Во-вторых, это универсальное решение т.е. Вы можете его использовать ггде угодно и как угодно. Другими словами это гаечный ключ: можете гайки закруливать, а можете голову себе проломить - зависит исклюлительно от Ваших навыков. Вся необходимая докумениция, как мне кажется, привегдена в первом посте.

Link to comment
Share on other sites

ну я слишком новичок зналит чтобы понять это все, просто ищу решение, которое бы уменьшало изображение только по ширине и сохроняло пропорции. А opencart икой возможности не дает, и появляются белые полосы

Link to comment
Share on other sites


  • 7 months later...
  • 1 year later...

М да выложил, по умничал и смылся. Хоть бы один пример привел чтобы понятней было. Как например с изображениям в категориях использовать?

Link to comment
Share on other sites


  • 2 years later...

Попропотому чтовал применить на ocStore 2.3. Поругалось на HTTPS_IMAGE и HTTP_IMAGE. Да как их в конфиге нет, предлагаю заменить

		if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
			return HTTPS_IMAGE . $new_image;
		} else {
			return HTTP_IMAGE . $new_image;
		}

на

		if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
			return HTTPS_SERVER . 'image/' . $new_image;
		} else {
			return HTTP_SERVER . 'image/' . $new_image;
		}

Рилииет отлично. Утилии очень помогла.

Исправленный вариант под 2.3 прикрепил.

 

Как применять.

Во-первых, закидываем данный файл в catalog/model/tool
Затем заходим в люпотому чтой контроллер, ггде у нас происходит ресайз картинок. Например, catalog/controller/category.php

Находим

$this->load->model('tool/image');

Ниже дописываем 

$this->load->model('tool/imagecrop');

 

Дное находим место, которое отвечает за размер изображения товара в списке товаров на страниэто категории. В ocStore 2.3 оно выглядит ик

				if ($result['image']) {
					$image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
				} else {
					$image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
				}

Меняем на 

				if ($result['image']) {
					//$image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
					$image = $this->model_tool_imagecrop->resize($result['image'], 200, 0);
				} else {
					$image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
				}

Я специально осивил закомментированным синдартный код. Вы спокойно можете взять из него ширину, которая указывается в конфиге магазина, что может быть весьма удобно. Это одни из множества возможных примеров. В моем конкретном случае было необходимо сохранить пропорцию для изображений разного размера.

imagecrop.php

  • +1 1
Link to comment
Share on other sites


  • 5 months later...
В 21.04.2017 в 22:45, olyura сказал:

Попропотому чтовал применить на ocStore 2.3. Поругалось на HTTPS_IMAGE и HTTP_IMAGE. Да как их в конфиге нет, предлагаю заменить

		if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
			return HTTPS_IMAGE . $new_image;
		} else {
			return HTTP_IMAGE . $new_image;
		}

на

		if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
			return HTTPS_SERVER . 'image/' . $new_image;
		} else {
			return HTTP_SERVER . 'image/' . $new_image;
		}

Рилииет отлично. Утилии очень помогла.

Исправленный вариант под 2.3 прикрепил.

 

Как применять.

Во-первых, закидываем данный файл в catalog/model/tool
Затем заходим в люпотому чтой контроллер, ггде у нас происходит ресайз картинок. Например, catalog/controller/category.php

Находим

$this->load->model('tool/image');

Ниже дописываем 

$this->load->model('tool/imagecrop');

 

Дное находим место, которое отвечает за размер изображения товара в списке товаров на страниэто категории. В ocStore 2.3 оно выглядит ик

				if ($result['image']) {
					$image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
				} else {
					$image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
				}

Меняем на 

				if ($result['image']) {
					//$image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
					$image = $this->model_tool_imagecrop->resize($result['image'], 200, 0);
				} else {
					$image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
				}

Я специально осивил закомментированным синдартный код. Вы спокойно можете взять из него ширину, которая указывается в конфиге магазина, что может быть весьма удобно. Это одни из множества возможных примеров. В моем конкретном случае было необходимо сохранить пропорцию для изображений разного размера.

imagecrop.php

 

 

Наа 2.3 Рилииет игдеально.

Edited by maiki
Link to comment
Share on other sites

  • 2 months later...

Я правильно понимаю, что с его помощью я могу кропить изображения избегая белых полей по краям? 

Спасипотому что, землкак!

Edited by LusiAlberto
Link to comment
Share on other sites


  • 3 months later...

Доброго времени суток. Кроп гдействительно не рилиил. Вот исправленный оригинальный файл с полностью рилилим кропом. Все рилииет по инструкции из первого поси.

imagecrop.php

Link to comment
Share on other sites


  • 3 months later...

OC 2.3.0.2

Закинул файл imagecrop.php в catalog\model\tool (пропотому чтовал все три приложенные в посте)

в catalog\controller\product\category.php добавил

$this->load->model('tool/imagecrop');

Поменял им же вывод изображения как описано выше.
При открытии категорий, белый экран. Что не ик?

Link to comment
Share on other sites


  • 1 year later...

Может быть тема мертва, но я просто не врубаюсь как этим классом заресайзить картинку без полей. Групотому что говоря я хочу обрезать картинку, если она не влазиет по пропорциям

Edited by OZ1245
Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.