edifier

Размер изображения товара

Рекомендуемые сообщения

edifier    23

Так сложилось, что высота и ширина изображения товара в разных пропорциях. В админке можно указать ширину и высоту изображения. Если картинка не соответствует пропорциям что указал, то пустые области получаются белого цвета(либо того цвета, который указал в /system/library/image)

Вопрос: возможно ли сделать так,чтоб в админке указывать только ширину изображения, а высота подбиралась автоматически под пропорции картинки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
xttp    9

тоже интересует этот вопрос

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Bersi    44

Рабочий вариант для версии 1.5.3:

1. Качаем архив отсюда (прямая ссылка на файл).

2. Распаковываем на сайт с заменой (заменяются файлы system/library/image.php и catalog/model/tool/image.php, при желании делаем их предварительный бэкап)

3. Ищем в файле catalog/controller/product/product.php, следующее:

$this->data['thumb'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_thumb_width'), $this->config->get('config_image_thumb_height'));
и заменяем на:

$this->data['thumb'] = $this->model_tool_image ->onesize($product_info['image'], $this->config->get('config_image_thumb_width'));
Таким образом мы поменяли генерацию миниатюры для основного изображения товара. Для того, чтобы поменять миниатюры дополнительных изображений, ищем там же

'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height'))
и заменяем на:

'thumb' => $this->model_tool_image ->onesize($result['image'], $this->config->get('config_image_popup_width'))
Подобным же образом заменяем код для всплывающих картинок, только вместо config_image_thumb_width пишем config_image_popup_width

В результате миниатюры генерируются пропорционально исходному изображению по большей стороне. Если же мы хотим, чтобы все картинки генерировались исходя только из ширины исходного изображения, то в файле system/library/image.php ищем код

// calculate dimensions
		 if ($photo_width > $maxsize OR $photo_height > $maxsize) {
		
		  if ($photo_width == $photo_height) {
		
		   $width = $maxsize;
		   $height = $maxsize;
		  
		   }elseif($photo_width > $photo_height) {
		  
			   $scale = $photo_width / $maxsize;
			  $width = $maxsize;
			$height = round ($photo_height / $scale);
		
		  }else{
		
		   $scale = $photo_height / $maxsize;
		   $height = $maxsize;
		   $width = round ($photo_width / $scale);
		
		  }
		
		 }else{
		
		  $width = $photo_width;
		  $height = $photo_height;
		
		 }
и меняем на

// calculate dimensions
		 if ($photo_width > $maxsize OR $photo_height > $maxsize) {
		
		  if ($photo_width == $photo_height) {
		
		   $width = $maxsize;
		   $height = $maxsize;
		  
		   }else{
		  
			   $scale = $photo_width / $maxsize;
			  $width = $maxsize;
			$height = round ($photo_height / $scale);
		
		  }
		
		 }else{
		
		  $width = $photo_width;
		  $height = $photo_height;
		
		 }
После этого ширина изображений будет та, что указана в настройках сайта, высота - пропорциональной исходному изображению.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ichaos    0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
R1peR    15

Как вариант - заливать изображения на ftp вручную.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
KaReGlAzKa    2

А то же самое возможно сделать для товаров в категориях, последний, рекомендуемых ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Nickkam    0

а еще варианты, нельзя чтобы он сам сохраняя пропорции уменьшал до определенного размера?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
sitecreator    546

у меня ничего не изменилось

иногда надо почистить кеш в браузере, а иногда еще и кеш картинок на сервере.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
sitecreator    546

Так сложилось, что высота и ширина изображения товара в разных пропорциях. В админке можно указать ширину и высоту изображения. Если картинка не соответствует пропорциям что указал, то пустые области получаются белого цвета(либо того цвета, который указал в /system/library/image)

Вопрос: возможно ли сделать так,чтоб в админке указывать только ширину изображения, а высота подбиралась автоматически под пропорции картинки?

я именно так и сделал.

в админке задаете ограничение по ширине, а по высоте можете поставить довольно большое значение, чтобы избежать обрезания, например, 500 или 1000.

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

и далее правите один файл, код в этой теме: http://opencartforum...B8%D0%B0%D1%82/

я правил часть кода в файле image.php. для версии 1.5.4.1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
sitecreator    546

А то же самое возможно сделать для товаров в категориях, последний, рекомендуемых ?

разумеется. смотрите мое решение

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
antracit    3

Насколько я понимаю это изменение касается карточек товара? А как быть со страницами категорий, я бы лучше согласился растягивать изображения, то как выглядит сейчас.... это печаль.  http://mixx-mebel.net/case-compartment файлы заменил, кэш (изображений) почистил, так понимаю что требуется изменение в контроллере категорий?
предположительно в этом фрагменте кода 

if ($category_info['image']) {
				$this->data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height'));
			} else {
				$this->data['thumb'] = '';
			}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
antracit    3

Насколько я понимаю это изменение касается карточек товара? А как быть со страницами категорий, я бы лучше согласился растягивать изображения, то как выглядит сейчас.... это печаль.  http://mixx-mebel.net/case-compartment файлы заменил, кэш (изображений) почистил, так понимаю что требуется изменение в контроллере категорий?

предположительно в этом фрагменте кода 

if ($category_info['image']) {
				$this->data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height'));
			} else {
				$this->data['thumb'] = '';
			}

Попробовал сделать изменения по принципу контроллера товара, получилось вот что: dad8a6cba687665e6fadaed0eae102a7.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
deim    242

Попробовал сделать изменения по принципу контроллера товара, получилось вот что: dad8a6cba687665e6fadaed0eae102a7.png

Круто же получилось!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
antracit    3

А по подробнее можно?

Для начала залил файлы из архива тс, на странице продукта сделал изменения в контроллере, то что хотел-то и получил. Далее меняю контроллер категории catalog/controller/product/category.php. заменяем 

$this->data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height'));

на 

$this->data['thumb'] = $this->model_tool_image->onesize($product_info['image'], $this->config->get('config_image_category_width'));

заменяю

$this->model_tool_image->resize($result['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height'))
				);
			}

на

$this->model_tool_image->onesize($product_info['image'], $this->config->get('config_image_category_width'))
				);
			}

заменяем

 $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));

на

$this->model_tool_image->onesize($product_info['image'], $this->config->get('config_image_product_width'));

почистил кеш картинок и получил то что видели на скрине, сейчас я вернул как было.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
flenj    0

а для версии 2.1.х.х может кто-нибудь подсказать как сделать pop-up картинки без белых полей?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Fruit    1

Рабочий вариант для версии 1.5.3:

1. Качаем архив отсюда (прямая ссылка на файл).

2. Распаковываем на сайт с заменой (заменяются файлы system/library/image.php и catalog/model/tool/image.php, при желании делаем их предварительный бэкап)

3. Ищем в файле catalog/controller/product/product.php, следующее:

$this->data['thumb'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_thumb_width'), $this->config->get('config_image_thumb_height'));
и заменяем на:

$this->data['thumb'] = $this->model_tool_image ->onesize($product_info['image'], $this->config->get('config_image_thumb_width'));
Таким образом мы поменяли генерацию миниатюры для основного изображения товара. Для того, чтобы поменять миниатюры дополнительных изображений, ищем там же

'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height'))
и заменяем на:

'thumb' => $this->model_tool_image ->onesize($result['image'], $this->config->get('config_image_popup_width'))
Подобным же образом заменяем код для всплывающих картинок, только вместо config_image_thumb_width пишем config_image_popup_width

В результате миниатюры генерируются пропорционально исходному изображению по большей стороне. Если же мы хотим, чтобы все картинки генерировались исходя только из ширины исходного изображения, то в файле system/library/image.php ищем код

// calculate dimensions
		 if ($photo_width > $maxsize OR $photo_height > $maxsize) {
		
		  if ($photo_width == $photo_height) {
		
		   $width = $maxsize;
		   $height = $maxsize;
		  
		   }elseif($photo_width > $photo_height) {
		  
			   $scale = $photo_width / $maxsize;
			  $width = $maxsize;
			$height = round ($photo_height / $scale);
		
		  }else{
		
		   $scale = $photo_height / $maxsize;
		   $height = $maxsize;
		   $width = round ($photo_width / $scale);
		
		  }
		
		 }else{
		
		  $width = $photo_width;
		  $height = $photo_height;
		
		 }
и меняем на

// calculate dimensions
		 if ($photo_width > $maxsize OR $photo_height > $maxsize) {
		
		  if ($photo_width == $photo_height) {
		
		   $width = $maxsize;
		   $height = $maxsize;
		  
		   }else{
		  
			   $scale = $photo_width / $maxsize;
			  $width = $maxsize;
			$height = round ($photo_height / $scale);
		
		  }
		
		 }else{
		
		  $width = $photo_width;
		  $height = $photo_height;
		
		 }
После этого ширина изображений будет та, что указана в настройках сайта, высота - пропорциональной исходному изображению.

 

есть какое либо решение для Ocstore 2.1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
deim    242

@Fruit, вам нужно подгонять по ширине или по высоте? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
LehaLebed    4

@Fruit, вам нужно подгонять по ширине или по высоте? 

Мне нужно по высоте под версию 2.3

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу