Вот у меня имеется класс для загрузки и ресайза картинок. Да, велосипед еще тот, но я только учусь.
class Picture
{
protected $img;
private $type = array('image/jpeg','image/png');
public $size = 300000;
public function __construct($img)
{
$this -> img = $img;
$this -> checked($img);
$this -> getSize($img);
$this -> rename($img);
}
protected function checked($img){
if(in_array($img['type'],$this->type)){
return $this;
} else {
exit('Что это? '. $this->img['type']);
}
}
private function getSize($img)
{
if($img['size'] < $this -> size){
return $this;
} else {
exit("Максимальный размер файла:".$this->size);
}
}
private function rename()
{
$name = md5(uniqid($this->img['name']));
$extension = pathinfo($this -> img['name'],PATHINFO_EXTENSION);
$this-> img['name'] = $name.'.'. $extension;
return $this;
}
public function save()
{
move_uploaded_file($this->img['tmp_name'],$_SERVER['DOCUMENT_ROOT']."/image/".$this->img['name']);
return $this;
}
public function resize($new_width)
{
list($width, $height) = getimagesize($_SERVER['DOCUMENT_ROOT'].'/image/'.$this -> img['name']);
$d = $height/$width;
$new_height = $new_width*$d;
$base = imagecreatetruecolor($new_width,$new_height);
if($this->img['type']==='image/jpeg')
{
$source = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT'].'/image/'.$this -> img['name']);
}
else
{
$source = imagecreatefrompng($_SERVER['DOCUMENT_ROOT'].'/image/'.$this -> img['name']);
}
imagecopyresampled($base,$source,0,0,0,0,$new_width,$new_height,$width,$height);
imagejpeg($base, 'image/small-'.$this->img['name']);
return $this;
}
}
Вызываю:
$img = new Picture($_FILES['images']);
$img-> save()
-> resize(600);
Каким образом его нужно адаптировать под Laravel, если в в роутинге вызывается только 1 метод?
Route::get('user/profile', [
'as' => 'profile', 'uses' => 'Controller@Method'
]);
Ведь мне нужно прогонять мой файл чтоб изменить его имя, сохранить оригинал, отресайзить и сохранить копию и в 1 метод это все пихать вообще как-то странно.