Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

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

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

Надіслати
Поділитися на інших сайтах


  • 4 months later...
  • 1 month later...

Рабочий вариант для версии 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;
		
		 }
После этого ширина изображений будет та, что указана в настройках сайта, высота - пропорциональной исходному изображению.
  • +1 6
Надіслати
Поділитися на інших сайтах


  • 1 month later...

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

Надіслати
Поділитися на інших сайтах


  • 1 month later...
  • 2 weeks later...

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

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

Надіслати
Поділитися на інших сайтах

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

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

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

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

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

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

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

Надіслати
Поділитися на інших сайтах

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

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

  • +1 1
Надіслати
Поділитися на інших сайтах

  • 6 months later...

Насколько я понимаю это изменение касается карточек товара? А как быть со страницами категорий, я бы лучше согласился растягивать изображения, то как выглядит сейчас.... это печаль.  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'] = '';
			}
Надіслати
Поділитися на інших сайтах


Насколько я понимаю это изменение касается карточек товара? А как быть со страницами категорий, я бы лучше согласился растягивать изображения, то как выглядит сейчас.... это печаль.  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

Надіслати
Поділитися на інших сайтах


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

Для начала залил файлы из архива тс, на странице продукта сделал изменения в контроллере, то что хотел-то и получил. Далее меняю контроллер категории 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'));

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

  • +1 1
Надіслати
Поділитися на інших сайтах


  • 2 years later...
  • 1 year later...

Рабочий вариант для версии 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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.