Убираем сжатие изображений товара в openCart на примере версии 1.5.5.1
Автор
|
0 Голосов: 0 |
Доброго времени суток! Сейчас я вам расскажу как бороться с принудительным сжатием изображения товаров на cms openCart. Данный хак рассмотрим на примере версии 1.5.5.1 этого движка. В сети встречал несколько "решений" этой проблемы, но они никак не помогали, пришлось поразмышлять самому, в итоге - профит!
Для того, чтобы побороть данную проблему, достаточно всего лишь подкорректировать одну public function в файле, который отвечает за операции с загруженными изображениями.
Данная функция находится в файле ../system/library/image.php - открываем его.
Теперь ищем непосредственно саму функцию, которая именуется как public function resize. (у меня это 38 строка)
Тело функции:
Код PHP:
Заменяем данный код на:
public function resize($width = 150, $height = 150, $default = '') { if (!$this->info['width'] || !$this->info['height']) { return; } $xpos = 0; $ypos = 0; $scale = 1; $scale_w = $width / $this->info['width']; $scale_h = $height / $this->info['height']; if ($default == 'w') { $scale = $scale_w; } elseif ($default == 'h'){ $scale = $scale_h; } else { } if ($scale == 1 && $scale_h == $scale_w && $this->info['mime'] != 'image/png') { return; } $new_width = (int)($this->info['width'] * $scale); $new_height = (int)($this->info['height'] * $scale); $xpos = (int)(($width - $new_width)); $ypos = (int)(($height - $new_height)); $image_old = $this->image; } else { } imagecopyresampled($this->image, $image_old, $xpos, $ypos, 0, 0, $new_width, $new_height, $this->info['width'], $this->info['height']); $this->info['width'] = $width; $this->info['height'] = $height; }
Код PHP:
То есть, как можно увидеть мы просто вырезали часть функции, которая и отвечает за сжатие, а ее остаток сохраняем для того, чтобы не нарушать структуру cms.
public function resize($width = 150, $height = 150, $default = '') { if (!$this->info['width'] || !$this->info['height']) { return; } $this->info['width'] = $width; $this->info['height'] = $height; }
Вырезанная часть (то, что для нас лишнее):
Код PHP:
Почти готово! Теперь сохраняем наш файл image.php со всеми изменениями и в корневой папки удаляем все изображения с папки ../image/cache/ (таким образом мы очищаем кэш изображений и при последующей загрузки страницы, картинки будут отображать в оригинальном, не сжатом качестве)
$xpos = 0; $ypos = 0; $scale = 1; $scale_w = $width / $this->info['width']; $scale_h = $height / $this->info['height']; if ($default == 'w') { $scale = $scale_w; } elseif ($default == 'h'){ $scale = $scale_h; } else { } if ($scale == 1 && $scale_h == $scale_w && $this->info['mime'] != 'image/png') { return; } $new_width = (int)($this->info['width'] * $scale); $new_height = (int)($this->info['height'] * $scale); $xpos = (int)(($width - $new_width)); $ypos = (int)(($height - $new_height)); $image_old = $this->image; } else { } imagecopyresampled($this->image, $image_old, $xpos, $ypos, 0, 0, $new_width, $new_height, $this->info['width'], $this->info['height']);
Надеюсь данный пост решил вашу проблему, удачи :)
Комментарии (0)
Нет комментариев. Ваш будет первым!