Laravel에서 S3로 올라가는 이미지 크기 조정
3485 단어 InterventionPHP라라벨이미지 처리S3
목적
AWS의 경비 삭감을 위해서 이미지 품질을 보증하는 전제로 S3에 업하는 화상의 압축을 해 주었으면 하는 디렉터로부터의 요망을 실현
요건
[1] 라이브러리 인 GD 설치
$ yum install php-gd
# GD ライブラリの情報を確認
php -r 'print_r(gd_info());'
[2] Intervention Image 설치
$ composer require intervention/image
あるいはcomposer.jsonファイルに下記を追加
"intervention/image": "^2.5",
Laravel 설정
app\config\app.php 파일에 다음을 추가
[1] Intervention Image 서비스 제공자 추가
'providers' => [
Intervention\Image\ImageServiceProvider::class,
],
[2] Intervention Image의 외관 추가
'aliases' => [
'Image' => Intervention\Image\Facades\Image::class,
],
컨트롤러 작성
namespace App\Http\Controllers\User;
use Intervention\Image\Facades\Image as Image;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Storage;
class UploaderController extends Controller
{
public function putImageTmp()
{
$file = request()->file('file');
$image = Image::make($file);
$image->resize(70, 50);
$path = request()->file('file')
->store(config('const.file_tmp_dir'));
return response()->success([
'url' => Storage::url($path),
'path' => $path,
]);
}
높이만 지정하고 가로는 같은 비율로 리사이즈하고 싶은 경우
$image->resize(null, 50, function ($constraint) {
$constraint->aspectRatio();
});
잠깐 빠진 곳
[1] 라이브러리 인 GD가 설치되어 있지 않으면 다음 오류가 발생합니다.
local.ERROR: Call to undefined function Intervention\Image\Gd\imagecreatefromjpeg() {"userId":11,"exception":"[object] (Error(code: 0): Call to undefined function Intervention\\Image\\Gd\\imagecreatefromjpeg() at /var/www/html/projdir/vendor/intervention/image/src/Intervention/Image/Gd/Decoder.php:38)
[2] GD 라이브러리 정보 확인
$ php -r 'print_r(gd_info());'
Array
(
[GD Version] => bundled (2.1.0 compatible)
[FreeType Support] => 1
[FreeType Linkage] => with freetype
[GIF Read Support] => 1
[GIF Create Support] => 1
[JPEG Support] => ←「JPEG Support」が有効になっていない
[PNG Support] => 1
[WBMP Support] => 1
[XPM Support] => 1
[XBM Support] => 1
[WebP Support] =>
[BMP Support] => 1
[JIS-mapped Japanese Font Support] =>
)
[3] 라이브러리인 GD 설치
$ yum install php-gd
GD 라이브러리 정보 확인
$ php -r 'print_r(gd_info());'
아래와 같이 JPEG Support」가 「1」 유효하게 되면 OK
[GIF Create Support] => 1
이미지 크기 조정 결과
리사이즈 전
리사이즈 후
이미지 리사이즈 이외 다양한 놀 수 있습니다
모자이크
$img->pixelate(50);
그레이 스케일
$img->greyscale();
Reference
이 문제에 관하여(Laravel에서 S3로 올라가는 이미지 크기 조정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kerry/items/9370ec07a6d5c00e08c9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)