리자

썸네일 이미지 생성 함수

사용방법 :
 
// 비율에 따라 생성할 경우
create_thumb(500, 0, 소스이미지파일명, 썸네일이미지파일명);
 
// 고정방식을 사용할 경우
create_thumb(500, 500, 소스이미지파일명, 썸네일이미지파일명);
 
*** 위의 경우 모두 500 보다 넓이가 작은 이미지는 무시한다.
 
 
// 원본 이미지를 넘기면 비율에 따라 썸네일 이미지를 생성함
function create_thumb($width, $height, $source, $thumb="")
{
    // 썸네일의 넓이가 넘어오지 않으면 에러
    if (!$width)
        return -1;
    if (!$thumb)
        $thumb = $source;
    $size = getimagesize($source);
    if ($size[2] == 1)
        $source = imagecreatefromgif($source);
    else if ($size[2] == 2)
        $source = imagecreatefromjpeg($source);
    else if ($size[2] == 3)
        $source = imagecreatefrompng($source);
    else
        return -2;
    // 썸네일 이미지 넓이 보다 원본이미지의 넓이가 작다면 그냥 원본이미지가 썸네일이 됨
    if ($width > $size[0])
    {
        $target = imagecreatetruecolor($size[0], $size[1]);
        imagecopyresampled($target, $source, 0, 0, 0, 0, $size[0], $size[1], $size[0], $size[1]);
    }
    else
    {
        // 썸네일 높이가 넘어왔다면 비율에 의해 이미지를 생성하지 않음
        if ($height)
        {
            // 원본이미지를 썸네일로 복사
            // 1000x1500 -> 500x500 으로 복사되는 형식이므로 이미지가 일그러진다.
            $comp_height = $height;
        }
        else
        {
            // 원래 이미지와 썸네일 이미지와의 비율
            $rate = round($width / $size[0], 2); // 소수점 2자리 , 소수점 3자리에서 반올림됨
            // 비율에 의해 계산된 높이
            $comp_height = floor($size[1] * $rate); // 소수점 이하 버림
        }
        $target = imagecreatetruecolor($width, $comp_height);
        imagecopyresampled($target, $source, 0, 0, 0, 0, $width, $comp_height, $size[0], $size[1]);
    }
    @imagejpeg($target, $thumb, 100);
    @chmod($thumb, 0666); // 추후 삭제를 위하여 파일모드 변경
    return 1;
}
|

댓글 6개

감사합니다.

저는 생각할때 항상 필요한것이

3. 일단 크기를 맞춘후 비율에 따라 가운데를 기준으로 크롭한다(가로든세로든)

요거 있는 것은 찾기가 정말 어렵더군요.

나중에 요것도 추가되면 좋겠어요..
오 좋은 정보 감사합니다...ㅜ_ㅜ
그렇지 않아도 필요했던 건데....
파일모드 변경이 필요하겠네요.
감사합니다.
감사합니다.
오 자세한 주석문 처리 보기 편하네욤 ㅎㅎ
감사합니다 잘 쓰겠습니다.
댓글을 작성하시려면 로그인이 필요합니다. 로그인

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요. 나누면 즐거움이 커집니다.

+
제목 글쓴이 날짜 조회
14년 전 조회 2.3만
14년 전 조회 4,243
14년 전 조회 5,387
14년 전 조회 4,799
14년 전 조회 6,909
14년 전 조회 4,204
14년 전 조회 1.1만
14년 전 조회 6,122
14년 전 조회 7,265
14년 전 조회 6,603
14년 전 조회 7,573
14년 전 조회 5,267
14년 전 조회 5,870
14년 전 조회 5,784
14년 전 조회 7,663
14년 전 조회 4,014
14년 전 조회 5,146
14년 전 조회 3,701
14년 전 조회 4,416
14년 전 조회 9,234
🐛 버그신고