Я везде смотрю, как я могу удалить изменение размера изображения в OpenCart, но ничего не нашел об этом.
Мне нужно, чтобы оно изменялось, но не поддерживало соотношение. Я хочу, чтобы изображение было таким, как я его установил.
Вот код изменения размера в системе / library / image.php
public function resize($width = 0, $height = 0) { if (!$this->info['width'] || !$this->info['height']) { return; } $xpos = 0; $ypos = 0; $scale = min($width / $this->info['width'], $height / $this->info['height']); if ($scale == 1) { return; } $new_width = (int)($this->info['width'] * $scale); $new_height = (int)($this->info['height'] * $scale); $xpos = (int)(($width - $new_width) / 2); $ypos = (int)(($height - $new_height) / 2); $image_old = $this->image; $this->image = imagecreatetruecolor($width, $height); if (isset($this->info['mime']) && $this->info['mime'] == 'image/png') { imagealphablending($this->image, false); imagesavealpha($this->image, true); $background = imagecolorallocatealpha($this->image, 255, 255, 255, 127); imagecolortransparent($this->image, $background); } else { $background = imagecolorallocate($this->image, 255, 255, 255); } imagefilledrectangle($this->image, 0, 0, $width, $height, $background); imagecopyresampled($this->image, $image_old, $xpos, $ypos, 0, 0, $new_width, $new_height, $this->info['width'], $this->info['height']); imagedestroy($image_old); $this->info['width'] = $width; $this->info['height'] = $height; }
Что в этом коде можно было бы удалить, чтобы изображение не сохраняло его соотношение при изменении размера?
Прежде всего, я бы оставил инструмент изменения размера по умолчанию, поскольку в некоторых случаях он может пригодиться. Я сделал еще две функции для изменения размеров изображений.
Одна функция, которая обрезает изображение, чтобы он соответствовал размеру, установленному в админе. Теперь добавляются пустые белые области. Это отлично подходит для списков продуктов. Вторая добавленная мной функция – это изменение размера изображения, поэтому наибольший размер будет установлен на максимальный размер, заданный администратором. Он будет масштабироваться пропорционально.
Новые файлы размещаются в ветке форума OpenCart .
Я назвал две дополнительные функции cropize и oneize . Все, что вам нужно сделать, это найти используемые функции изменения размера в контроллере и настроить это:
'thumb' => $this->model_tool_image ->resize($image, $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')));
чтобы:
'thumb' => $this->model_tool_image ->cropsize($image, $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')));
Функция oneize нуждается только в одном параметре, так что это зависит от вас, но вы можете использовать что-то вроде этого:
'popup' => $this->model_tool_image ->onesize($result['image'], $this->config->get('config_image_popup_width'))
Надеюсь, это поможет вам улучшить изображение.