라라벨 이미지 리사이즈를 찾아보다가 알게된 패키지입니다.
Intervention Image - Introduction
Intervention Image Intervention Image is an open source PHP image handling and manipulation library. It provides an easier and expressive way to create, edit, and compose images and supports currently the two most common image processing libraries GD Libra
image.intervention.io
아래 명령어로 설치를 해줍니다.
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 |
댓글