본문 바로가기
IT/PHP

Laravel - 이미지 리사이즈

by Sungjun_ 2021. 3. 9.

라라벨 이미지 리사이즈를 찾아보다가 알게된 패키지입니다.

image.intervention.io/

 

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

댓글