Задавал я на форуме вопрос по поводу обрезчика фотографий для opencart, но в целом проблема была решена лишь частично. Временное решение не подошло, поэтому пришлось таки взяться за мануалы по стандартным ф-ям php. Теперь при загрузке картинок в опенкарт он не добавляет к ним белых полей, а просто обрезает лишнее (елси карнитка слишком широкая - бока, если слишком высокая - верх и низ). При этом делает её квадратной. Прошу заметить, что отображаемые при этом картинки на страничках отнюдь не выглядят квадратными: параметры их вида вы настраиваете в админке. Так вот, что нужно сделать? Берём файл system/library/image.php, находим в его коде метод public function resize() И меняем её код на следющее: Код: public function resize($width = 0, $height = 0) { if (!$this->info['width'] || !$this->info['height']) { return; } $scale = max($width / $this->info['width'], $height / $this->info['height']); /* if ($scale == 1 && $this->info['mime'] != 'image/png') { return; }*/ //$new_width = (int)($this->info['width'] * $scale); //$new_height = (int)($this->info['height'] * $scale); $new_width=$width; $new_height=$height; $src_width=$new_width/$scale; $src_height=$new_height/$scale; $src_x=($this->info['width']-$src_width)/2; $src_y=($this->info['height']-$src_height)/2; $image_old = $this->image; //$this->image = imagecreatetruecolor($width, $height); // преобразуем, сохранив пропорции $this->image = imagecreatetruecolor($new_width, $new_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, 0, 0, $src_x, $src_y, $new_width, $new_height, $src_width, $src_height); //imagecopyresampled($this->image, $image_old, $xpos, $ypos, 0, 0, $new_width, $new_height, $new_width, $new_height); imagedestroy($image_old); //$this->info['width'] = $width; // $this->info['height'] = $height; $this->info['width'] = $new_width; $this->info['height'] = $new_height; }