Imagick이 PHP 서버에 설치된 경우, 아래 코드를 이용하여 이미지 섬네일을 만들 수 있습니다. 저는 이용하는 호스팅 서버에 해당 프로그램이 설치가 되어 있어 별도 작업을 하지 않고 바로 사용하지만, 설치가 안된 경우에는 링크를 참고하여 설치하세요.

다음 함수를 추가합니다.
/**
 * 
 * Generate Thumbnail using Imagick class
 *  
 * @param string $img
 * @param string $width
 * @param string $height
 * @param int $quality
 * @return boolean on true
 * @throws Exception
 * @throws ImagickException
 */
function generateThumbnail($img, $width, $height, $quality = 90)
{
    if (is_file($img)) {
        $imagick = new Imagick(realpath($img));
        $imagick->setImageFormat('jpeg');
        $imagick->setImageCompression(Imagick::COMPRESSION_JPEG);
        $imagick->setImageCompressionQuality($quality);
        $imagick->thumbnailImage($width, $height, false, false);
        $path_parts = pathinfo($img);

        // echo $path_parts['dirname'], "\n";// 디렉토리 경로 - 파일이름만 사용하는 경우 ['dirname']은 사용하지 않음
        // echo $path_parts['filename'], "\n"; // 파일이름(확장자 제외)
        $filename_no_ext = $path_parts['dirname']."/".$path_parts['filename'];
        
        if (file_put_contents($filename_no_ext . '_thumb' . '.jpg', $imagick) === false) {
            throw new Exception("Could not put contents.");
        }
        return true;
    }
    else {
        throw new Exception("No valid image provided with {$img}.");
    }
}
  • $img – 이미지 경로와 파일이름. (파일이름을 단독으로 사용하면 php 파일이 있는 디렉토리에 저장됨)
  • $width – 섬네일의 가로 크기 (px)
  • $height – 섬네일의 세로 크기 (px)
  • $quality – JPEG 품질 (0~100). 기본값 90

 

참고: 경로 및 파일 이름, 확장자 가져오기 (PHP, get file name without file extension)

사용 예시입니다.
try {
    generateThumbnail('example.jpeg', 240, 134, 65);
}
catch (ImagickException $e) {
    echo $e->getMessage();
}
catch (Exception $e) {
    echo $e->getMessage();
}

이 코드가 실행되면 원본 파일과 동일한 위치에 섬네일 파일이 생성됩니다.

 

출처: Creating a thumbnail from an uploaded image

문의 | 코멘트 또는 yoonbumtae@gmail.com


카테고리: WEB: BackendPHP


0개의 댓글

답글 남기기

Avatar placeholder

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다