Reviewed-on: #7 Co-authored-by: Paul Couture <paul@paulcouture.com> Co-committed-by: Paul Couture <paul@paulcouture.com>
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Livewire\Artist;
 | |
| 
 | |
| use Livewire\Component;
 | |
| use Livewire\WithFileUploads;
 | |
| use Spatie\Image\Image;
 | |
| use Intervention\Image\Facades\Image as InterventionImage;
 | |
| use ImageOptimizer;
 | |
| use Illuminate\Support\Facades\Storage;
 | |
| use Illuminate\Validation\Rules\File;
 | |
| use Illuminate\Http\RedirectResponse;
 | |
| use Livewire\Attributes\Validate;
 | |
| use Illuminate\Support\Facades\Log;
 | |
| use App\Jobs\OptimizeAvatarJob;
 | |
| 
 | |
| class Avatar extends Component
 | |
| {
 | |
|     use WithFileUploads;
 | |
| 
 | |
|     public $avatar;
 | |
| 
 | |
|     public $x;
 | |
|     public $y;
 | |
|     public $width;
 | |
|     public $height;
 | |
| 
 | |
|     public function render()
 | |
|     {
 | |
|         return view('livewire.artist.avatar');
 | |
|     }
 | |
| 
 | |
|     public function save()
 | |
|     {
 | |
|         $disk = Storage::disk('static');
 | |
|         $avatar = $this->avatar->store('avatars', 'static');
 | |
|         Image::load($disk->path($avatar))
 | |
|             ->manualCrop($this->width, $this->height, $this->x, $this->y)
 | |
|             ->save();
 | |
|         Image::load($disk->path($avatar))
 | |
|             ->width(350)
 | |
|             ->height(350)
 | |
|             ->save();
 | |
|         Log::info('Avatar: Optimizing ' . $disk->path($avatar));
 | |
|         OptimizeAvatarJob::dispatchSync($disk->path($avatar));
 | |
|         //ImageOptimizer::optimize($disk->path($avatar));
 | |
|         auth()->user()->artists()->first()->update(compact('avatar'));
 | |
|         $this->avatar = null;
 | |
|         return redirect(request()->header('Referer'));
 | |
|     }
 | |
| }
 |