Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Ресайз оригинала и размеры кэш картинок


 Поделиться

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

Здравствуйте.

 

Много прочитано про данную проблему, но мой вопрос немного расходится с созданными темами. Объясню на примере и покажу скриншот.

 

В настройках темы задан размер изображения товаров. Максимальный размер указал 650 * 650. Создал картинку с размером 650*650, "прокачал" её через оптимизацию, сжал. В итоге получилось ~40 Кб. Что ж, отправляем её к товару.

 

Создались уменьшенные копии этого изображения в кэше для других размеров. Посмотрел я эти размеры :huh:

 

b2JSssdhTLeQq8jg4FMAQg.jpeg

 

В итоге, моё оптимизированное изображение размером 650*650 при размере в 400 весит больше оригинала.

 

Совершенно никуда не годится. А размер в 228 чуть уступает оригиналу.

 

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

 

Буду благодарен за содержательные мнения и решения.

 

С уважением.

Изменено пользователем Truth_Explorer
Ссылка на комментарий
Поделиться на других сайтах


system/library/image.php

	
public function save($file, $quality = 90)

качество картинок, по умолчанию 90%. Уменьшите - уменьшится размер... и качество)

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


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

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


55 минут назад, Shureg сказал:

system/library/image.php


	
public function save($file, $quality = 90)

качество картинок, по умолчанию 90%. Уменьшите - уменьшится размер... и качество)

 

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

 

Проблема в том, что при ресайзе размер изображения оригинального становится меньше, а "весит" больше.

Изменено пользователем Truth_Explorer
Ссылка на комментарий
Поделиться на других сайтах


15 минут назад, gavi сказал:

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

 

буду благодарен за правильное решение. Это необходимо будет сделать в model/tool/image.php как я понимаю...

Изменено пользователем Truth_Explorer
Ссылка на комментарий
Поделиться на других сайтах


4 минуты назад, Truth_Explorer сказал:

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

 

Все правильно вам указали. И внимательно прочитали, не вы первый с проблемой сталкиваетесь. Решения еще есть, но с серверной стороны нужны работы. Вам предложили самое простое решение на 5 минут. Замените 90 процентное сжатие на 80..75 и получите нормальные размеры, но качество...

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


Truth_Explorer, Да тут известная проблема я очень долго искал решение данной проблемы но УВЫ простого решения я не нашел. 
просто так средствами PHP нельзя оптимизировать картинку. Тут я нашел 2 выхода

1) Подключения платного модуля оптимизация по API который будет оптимизировать вашы картинки (есть проблема во времени создании кешированой картинки)

2) Если же у вас VPS/VDS тогда вы можете установить консольные утилиты и интегрировать с ними PHP скрипт.

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

Коллеги, благодарю всех отписавших.

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

 

Я себе это представляю следующим образом: в соответствующих разделах (карточка товара, производители, логотипы и т.д.) подставлялись не уменьшенные варианты картинок, а единственная с указанием атрибутов width и height.

 

Это обдуманное и взвешенное решение, т.к. каждое изображение я обрабатываю самостоятельно, мол, кто-то сможет возразить, что кэш нужен, т.к. большие картинки вставлять (допустим) в обёртку width:100px height:100px - это моветон. Но я повторю, что это осознанный шаг.

 

Поэтому, резюмируя, задача такая:

я создаю единственное изображение, и на ресурс в нужных разделах подставляется именно она одна с атрибутами высота/ширина. Я хочу исключить картинка-200x200.jpg / картинка-100x100.jpg и т.д.

 

Есть ли у кого решение в данном направлении либо мысли?

 

Благодарю. 

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


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

Например, в product.php

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

станет

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

и так далее..

Ломать  - не строить :D

ЗЫ: Это если размеры в шаблоне будете жестко задавать. Иначе еще их передать надо будет в шаблон и там, соответственно, подставить атрибутами, что-то типа

$data['image_popup_width'] = $this->config->get($this->config->get('config_theme') . '_image_popup_width'); 
$data['image_popup_height'] = $this->config->get($this->config->get('config_theme') . '_image_popup_height');

 

Изменено пользователем Shureg
Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.