Ben fotoğraf işlemesi yaptığım yazılımlarda bu işlemi tamamen farklı bir trait üzerinde tutup bu traiti gereken yerlerde use edip kullanırım, örnek traitim şu şekildedir:
<?php
namespace App\Traits;
use File;
use Image;
use Input;
trait ImagerTrait
{
public function image($folder)
{
$uploaded = Input::file('image')->getRealPath();
$source = Image::make($uploaded);
$watermark = Image::make(public_path('images/watermark.png'));
$name = str_random(20) . '.jpg';
$files = $this->files($name, $folder);
$big = $files[0];
$source->resize(800, 800, function ($constraint) {
$constraint->aspectRatio();
})->save($big, 90);
$source->fit(230, 230)->save($files[1], 90);
$image = Image::make(public_path($big));
$image->insert($watermark, 'bottom-right', 15, 15)->save($big, 90);
return $name;
}
public function remove($name, $folder)
{
$files = $this->files($name, $folder);
File::delete($files);
}
public function files($name, $folder)
{
$files = [
"uploads/{$folder}/big/" . $name,
"uploads/{$folder}/small/" . $name,
];
return $files;
}
}
Örnek controller save metodu:
public function store($input)
{
$design = $this->model->fill($input->all());
$design->slug = str_slug($input->get('title'));
$design->image = $this->image('design');
$design->save();
return $design->id;
}