라라벨 이미지 리사이즈를 찾아보다가 알게된 패키지입니다.
아래 명령어로 설치를 해줍니다.
composer require intervention/image
그리고 라라벨 프로젝트 폴더에서 config/app.php 파일을 열어줍니다.
'providers' => 배열을 찾아 Intervention\Image\ImageServiceProvider::class 추가 해주고
'aliases' => 배열을 찾아 'Image' => Intervention\Image\Facades\Image::class 추가 해줍니다.
저는 public/images 폴더에 사진을 저장하기 때문에 config/filesystem.php 파일에서 링크를 추가하겠습니다.
'links' => [
public_path('storage') => storage_path('app/public'),
public_path('images') => storage_path('app/public/images'),
],
아래 명령어로 심볼릭 링크를 생성해줍니다.
php artisan storage:link
이렇게 나오면 링크가 제대로 생성된겁니다.
그리고 컨트롤러에서 store 메소드에 아래와 같이 입력해줍니다.
use Intervention\Image\Facades\Image;
public function store(Request $request)
{
$validation = $request->validate([
'title' => 'required|max:30',
'story' => 'required',
'image' => 'file|mimes:jpeg, jpg, bmp, png',
]);
$photo = new Photo();
$photo->user_id = auth()->user()->id;
$photo->title = $validation['title'];
$photo->story = $validation['story'];
if($request->file('image')){
$imgName = date('mdyHis').uniqid().'.jpeg';
$path = $request->file('image')->storeAs('public/images', $imgName);
$imgResize = Image::make(storage_path('app/public/images/'. $imgName))
->resize(500, 300)->save(storage_path('app/public/images/'. $imgName));
$photo->imageUrl = $path;
$photo->imageName = $imgName;
}
$photo->save();
return redirect()->route('photos.show', $photo->id);
}
$imaName은 현재시간으로 이미지 이름을 저장하고
$path는 images 폴더에 사진을 저장해줍니다.
$imgResize가 이미지를 리사이즈 하는 부분입니다.
경로 부분은 자신이 저장하는 이미지 경로와 같게 해주셔야 합니다.
'IT > PHP' 카테고리의 다른 글
Laravel - @include (0) | 2021.04.14 |
---|---|
Laravel - 컨트롤러 줄이기 (2) | 2021.04.14 |
Laravel - Scout(검색) (0) | 2021.03.07 |
Laravel - Pagination (2) | 2021.01.29 |
Laravel + vue : API(3) (0) | 2021.01.19 |
댓글