Jump to content
kikasso

Адаптивный resize изображений [решено]

Recommended Posts

В 18.08.2015 в 07:15, skull3d сказал:

OC 2.x, обрезка изображений в квадрат стандартными средствами без белых полей, широких по ширине, высоких по высоте (за наводку спасибо - freelancer):

 

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


$scale_w = $width / $this->info['width'];
$scale_h = $height / $this->info['height'];

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


$default = 'w';
        if ($scale_h > $scale_w) {
            $default = 'h';
        }

Готово.

 

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


if ($product_info['image']) {
				$data['popup'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height'));
			} else {
				$data['popup'] = '';
			}

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


if ($product_info['image']) {
				$data['popup'] = 'image/'. $product_info['image'];
			} else {
				$data['popup'] = '';
			}

 

Объясните подробнее, у меня тоже на 2.3 не работает не пойму что не так... очень нада!!!!!

Edited by dadx

Share this post


Link to post
Share on other sites
В 18.08.2015 в 07:15, skull3d сказал:

OC 2.x, обрезка изображений в квадрат стандартными средствами без белых полей, широких по ширине, высоких по высоте (за наводку спасибо - freelancer):

 

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


$scale_w = $width / $this->info['width'];
$scale_h = $height / $this->info['height'];

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


$default = 'w';
        if ($scale_h > $scale_w) {
            $default = 'h';
        }

Готово.

 

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


if ($product_info['image']) {
				$data['popup'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height'));
			} else {
				$data['popup'] = '';
			}

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


if ($product_info['image']) {
				$data['popup'] = 'image/'. $product_info['image'];
			} else {
				$data['popup'] = '';
			}

Спасибо, работает. А как сделать, чтобы не только главное изображение, но и дополнительные тоже отображались в оригинале?

Share this post


Link to post
Share on other sites

 

В последней версии (1.0.3) добавил адаптивный ресайз в трех вариантах:

 

  • по ширине
  • по высоте
  • автоматически

Соответственно достаточно в нужном месте поставить вызов если нужно выборочно ресайзить адаптивно.

Правильнее было бы это называть "адаптивная обрезка".

Ибо "адаптивный ресайз" не подразумевает обрезку совсем.  в том же imagemagick под адаптивным ресайзом понимается именно ресайз и никакой обрезки (crop).

 

resize($filename, $width, $height, 'auto')

 

а можно вообще код не править, а выставить настройки в самом модуле.  тогда будет применено ко всем картинкам.

 

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

плюч все плюшки суперсжатия и качество+скорость преобразования от imagick.

 

Спойлер


 

resize2.jpg.892e1b66fc9bb6647c5b10923cf9bd8d.jpg

resize1.jpg.ef18e9094366ff33921e73f477153ddb.jpg

resize3.jpg.9ba40e61f6b7afc7039374d9aa36ecd9.jpg

resize4.jpg.0fd4fa315d87657f67b10c5c7de8f2e1.jpg

 

 

Плюс в планах добавление функции убирания белых полей.

 

Пример работы этого метода (в зависимости от того выбрана ли адаптивная обрезка):

 

поле есть в исходнике по краям

resize5.jpg.b5ebc5c6468e75d99ac78a81d0ed77f4.jpg

 

убраны слева и справаresize6.jpg.36a33a11edfde525c9408547a8b90a75.jpg

 

убраны сверху и снизу

 

resize7.jpg.35b81566605bb8ebc0eda5dbbb3bbb87.jpg

 

Share this post


Link to post
Share on other sites
В 19.07.2017 в 13:56, dadx сказал:

 

Объясните подробнее, у меня тоже на 2.3 не работает не пойму что не так... очень нада!!!!!

Есть решение для 2.3.? Можно выложить сюда или в личку!

Share this post


Link to post
Share on other sites

Финалочка,

Для тех кто хочет, чтобы большие изображения сжимались только по высоте, а по краям автоматически с сохранением пропорции картинки.

 

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

		$xpos = 0;
		$ypos = 0;
		$scale = 1;

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

		if ($width == 1000) {
		$new_width = ($this->width * 1)/(($this->height * 1) / $height);
		$width = ($this->width * 1)/(($this->height * 1) / $height);
		}	

Ну и для красивого обрезания в миниатюрах и др. добавляем код от предыдущего оратора в этом же файле, для версии 2.3 после строк :

		$scale_w = $width / $this->width;
		$scale_h = $height / $this->height;

Вставляем:

        $default = 'w';
        if ($scale_h > $scale_w) {
            $default = 'h';
        }

 

Далее заходим в админку > модули > шаблоны > Ваш шаблон   и выставляем ширину у Всплывающих изображений "  1000  "  на этом все! Заливаем фотки и наслаждаемся нормальной галереей без обрезов.

 

пс. Значение "1000" в коде дано условно, можно заменить его на другое. Также код будет срабатывать и при установки этого значения у других изображений в шаблоне.

 

 

Edited by IvanKK

Share this post


Link to post
Share on other sites

Никак не пойму куда рыть.

Изображения не видно целиком. На оригинале дожна быть девушка в платье, а видно только кусок от платья.

screenshot-xn----8sbnbhvdcdwbah1c.xn--p1ai-2018.02.07-19-55-53.png

Share this post


Link to post
Share on other sites
В 17.01.2018 в 10:59, IvanKK сказал:

Финалочка,

Для тех кто хочет, чтобы большие изображения сжимались только по высоте, а по краям автоматически с сохранением пропорции картинки.

 

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


		$xpos = 0;
		$ypos = 0;
		$scale = 1;

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


		if ($width == 1000) {
		$new_width = ($this->width * 1)/(($this->height * 1) / $height);
		$width = ($this->width * 1)/(($this->height * 1) / $height);
		}	

Ну и для красивого обрезания в миниатюрах и др. добавляем код от предыдущего оратора в этом же файле, для версии 2.3 после строк :


		$scale_w = $width / $this->width;
		$scale_h = $height / $this->height;

Вставляем:


        $default = 'w';
        if ($scale_h > $scale_w) {
            $default = 'h';
        }

 

Далее заходим в админку > модули > шаблоны > Ваш шаблон   и выставляем ширину у Всплывающих изображений "  1000  "  на этом все! Заливаем фотки и наслаждаемся нормальной галереей без обрезов.

 

пс. Значение "1000" в коде дано условно, можно заменить его на другое. Также код будет срабатывать и при установки этого значения у других изображений в шаблоне.

 

 

Спасибо больше помогло. Окстор 2.3.0.2.3. Потом надо поиграть с размерами картинок в модулях, категории и карточки товара, чтобы выбрать оптимальный размер

Edited by delete
добавление

Share this post


Link to post
Share on other sites
В 08.02.2018 в 14:01, matroskat сказал:

Никак не пойму куда рыть.

Изображения не видно целиком. На оригинале дожна быть девушка в платье, а видно только кусок от платья.

screenshot-xn----8sbnbhvdcdwbah1c.xn--p1ai-2018.02.07-19-55-53.png

Ты какой метод использовал? 

 

В 17.01.2018 в 10:59, IvanKK сказал:

Финалочка,

Для тех кто хочет, чтобы большие изображения сжимались только по высоте, а по краям автоматически с сохранением пропорции картинки.

 

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


		$xpos = 0;
		$ypos = 0;
		$scale = 1;

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


		if ($width == 1000) {
		$new_width = ($this->width * 1)/(($this->height * 1) / $height);
		$width = ($this->width * 1)/(($this->height * 1) / $height);
		}	

Ну и для красивого обрезания в миниатюрах и др. добавляем код от предыдущего оратора в этом же файле, для версии 2.3 после строк :


		$scale_w = $width / $this->width;
		$scale_h = $height / $this->height;

Вставляем:


        $default = 'w';
        if ($scale_h > $scale_w) {
            $default = 'h';
        }

 

Далее заходим в админку > модули > шаблоны > Ваш шаблон   и выставляем ширину у Всплывающих изображений "  1000  "  на этом все! Заливаем фотки и наслаждаемся нормальной галереей без обрезов.

 

пс. Значение "1000" в коде дано условно, можно заменить его на другое. Также код будет срабатывать и при установки этого значения у других изображений в шаблоне.

 

 

Вот этот? 

Share this post


Link to post
Share on other sites

Здравствуйте, помогите решить проблему, уже мозг себе весь сломал.

Вывод изображений товаров в категории:

В категории товаров карточка товара первая  выводится 68*68 - при этом как отсутствующая, 

также подгружает изображения из папки:

ДОМЕН/image/cache/catalog/category/product

1. Выводит уменьшенное изображение 68*68 первым

2. Выводит ALT 

Нужно выводить изначальное изображение и скрыть alt

если я правильно понимаю это правится в контроллере

Помогите пожалуйста!!

 

https://om-ek.ru/product/kabel-i-provod

screenshot-om-ek.ru-2018.04.26-12-12-34.png

 

Предполагаю что проблема в этом куске но не совсем понимаю как его преобразовать 

if ($result['image']) {
                    if ($this->request->server['HTTPS']) {
                        $image_path = $this->config->get('config_ssl') . 'image/';
                    } else {
                        $image_path = $this->config->get('config_url') . 'image/';
                    }
        
                    $thumb_image = $this->model_tool_image->resize($result['image'], 68, 68);
                    $image = '<a class="panda-preview noborder" rel="bigPre" href="'.$image_path.$result['image'].'" title="'.$result['name'].'" style="height: 68px; font-size: 0px;"><img src="'.$thumb_image.'" alt="'.$result['name'].'" title="'.$result['name'].'"></a>';
                    $image = '<a class="noborder" rel="bigPre" href="'.$this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url).'" title="'.$result['name'].'" style="height: 68px; font-size: 0px;"><img src="'.$thumb_image.'" alt="'.$result['name'].'" /></a>';
                } else {
                    $image = '<img src="'.$this->model_tool_image->resize('placeholder.png', 68, 68).'" />';
                    $image = '<a class="noborder" rel="bigPre" href="'.$this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url).'" title="'.$result['name'].'" style="height: 68px; font-size: 0px;"><img src="'.$this->model_tool_image->resize('placeholder.png', 68, 68).'" /></a>';

 

Edited by KIRKIRKIR

Share this post


Link to post
Share on other sites
В 21.05.2013 в 02:02, Chenom0r сказал:

Буду очень признателен за помошь. Я просто извелся уже весь


чтобы вместо больших кэшированных (из папки image/cache/catalog/) изображений выводить большой оригинал (image/catalog/) в карточке товара, можно использовать модуль:

 

На ocStore 2.3.0.2.3 работает отлично! 

Share this post


Link to post
Share on other sites
В 17.01.2018 в 12:59, IvanKK сказал:

Финалочка,

Для тех кто хочет, чтобы большие изображения сжимались только по высоте, а по краям автоматически с сохранением пропорции картинки.

 

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


		$xpos = 0;
		$ypos = 0;
		$scale = 1;

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


		if ($width == 1000) {
		$new_width = ($this->width * 1)/(($this->height * 1) / $height);
		$width = ($this->width * 1)/(($this->height * 1) / $height);
		}	

Ну и для красивого обрезания в миниатюрах и др. добавляем код от предыдущего оратора в этом же файле, для версии 2.3 после строк :


		$scale_w = $width / $this->width;
		$scale_h = $height / $this->height;

Вставляем:


        $default = 'w';
        if ($scale_h > $scale_w) {
            $default = 'h';
        }

 

Далее заходим в админку > модули > шаблоны > Ваш шаблон   и выставляем ширину у Всплывающих изображений "  1000  "  на этом все! Заливаем фотки и наслаждаемся нормальной галереей без обрезов.

 

пс. Значение "1000" в коде дано условно, можно заменить его на другое. Также код будет срабатывать и при установки этого значения у других изображений в шаблоне.

 

 

Работает и в Version 3.0.2.0 спс автору

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.