기존에 ci4 메뉴얼 보고는 한계가 있어 직접 만들어서 사용했다.
파일처리 관련 모델을 생성하여 아래 함수를 넣어놓고 사용하면 편리하다.
/**
* makeThumbnail
* @param string $filePath 업로드 파일경로
* @param string $fileName 업로드 파일명
* @param int $width 가로
* @param int $height 세로
* @param int $quality 품질
* @param string $resizePoint : max|min
* @param bool $makeForce
* @return bool
*/
public function makeThumbnail($filePath, $fileName, $width = 250, $height = 250, $quality = 40, $resizePoint = 'max', $makeForce = false)
{
$image = getimagesize($filePath . $fileName);
$w = $image[0];
$h = $image[1];
$imgWidth = $w;
$imgHeight = $h;
$make = false;
$result['status'] = false;
// 최대값보다 클 경우
if ($w > $width || $h > $height) {
$rw = $height / $h;
$rh = $width / $w;
if ($resizePoint == 'max') {
if ($rw < $rh) {
$imgHeight = $height;
$masterDim = 'height';
} else {
$imgWidth = $width;
$masterDim = 'width';
}
} else {
if ($rw < $rh) {
$imgWidth = $width;
$masterDim = 'width';
} else {
$imgHeight = $height;
$masterDim = 'height';
}
}
$make = true;
} else {
$result['thumbSizeType'] = 0;
}
if ($make === true && $makeForce === false) {
$image = \Config\Services::image();
$status = $image->withFile($filePath . DIRECTORY_SEPARATOR . $fileName)
->withResource()
->resize($imgWidth, $imgHeight, true, $masterDim)
->save($filePath . DIRECTORY_SEPARATOR . 'thumb_' . $fileName, $quality);
if ($status) {
$result['status'] = true;
$result['thumbSizeType'] = $masterDim == 'height' ? 1 : 2;
}
}
return $result;
}
반응형
'PHP, Codeigniter' 카테고리의 다른 글
codeigniter4 views 경로 바꾸기, view path 가져오기 (0) | 2023.04.08 |
---|---|
php 배열 첫번째 요소 선택(순차 배열, 연관 배열) (0) | 2023.04.06 |
php 객체를 배열로, 배열을 객체로 (0) | 2023.03.27 |
php 양음부호 대체하는 함수 만들기 (0) | 2023.03.22 |
codeigniter4 파일형태 캐시 활용하기 (0) | 2023.03.21 |
댓글