웹마스터 팁

Thumbnail 생성하기 - 수정^^;

2003.07.11 01:13

holies

Thumbnail 만드는 방법이 밑에 있긴 한데 여러 툴을 사용하더군요.
GD만 사용해서 만드는 방법입니다.
상황에 맞게 변경해 쓰세요. 분석하기 어렵지 않을 겁니다.
혹시 이해가 안가시면 코멘트 남겨주세요. 주석 달아드릴께요. 지금은 귀찮아서... ^^;
생성된 그림은 JPG이며 크기가 고정되어 있습니다.

<?php
// 사용 예 : thumbnail.php?file=a.gif&file2=a.jpg
define('WIDTH', 100); // 가로 최대 크기
define('HEIGHT', 100); // 세로 최대 크기
define('BGCOLOR', 0xE0CCBB); // 크기 조정 후 생기는 여백 색
extract($_GET); // GET 방식으로 전달 받은 변수 풀기
$file_image = @getimagesize($file); // $file의 가로, 세로 크기 및 그림 종류 구하기
switch($file_image[2]) { // 그림 종류에 따라
       case 1: $src = imagecreatefromgif($file); break; // GIF일때 파일 열기
       case 2: $src = imagecreatefromjpeg($file); break; // JPG일때 파일 열기
       case 3: $src = imagecreatefrompng($file); break; // PNG일때 파일 열기
       default: exit('그림이 아닙니다.'); // 암것두 아닐때 -_-;
}
if($file_image[0] > $file_image[1]) { // 100*100에 맞추기 위해 가로와 세로 중에 더 긴게 무엇인지 판별
        // 가로가 더 길면
        $width = WIDTH; // 가로는 100으로 고정
        $height = $file_image[1] * WIDTH / $file_image[0]; // 세로는 비율에 맞게 계산
} else {
        // 세로가 더 길면
        $width = $file_image[0] * WIDTH / $file_image[1]; // 가로를 비율에 맞게 계산
        $height = HEIGHT; // 세로는 100으로 고정
}
$trg = imagecreatetruecolor(WIDTH, HEIGHT); // 100*100의 빈 그림 생성
imagefill($trg, 0, 0, BGCOLOR); // 생성한 그림을 BGCOLOR라는 색으로 채움.
imagecopyresampled($trg, $src, WIDTH - $width >> 1, HEIGHT - $height >> 1, 0, 0, $width, $height, $file_image[0], $file_image[1]); // 처음에 연 $src라는 그림을 방금 생성한 $trg에 그림 크기를 줄여서 복사
imagedestroy($src); // 처음에 연 $src 메모리에서 닫기
imagejpeg($trg, $file2, 50); // $trg를 $file2라는 이름의 파일로 출력, 50은 JPG 화질 (0~100)
imagedestroy($trg); // 나중에 연 $trg 메모리에서 닫기
header('Location: '.$file2); // 출력한 그림으로 주소 이동
?>