회원호스팅-네트워크 자원 공유 서비스 :: 진보네트워크센터

진보넷   회원 호스팅

작성자
에띠
제목
(GD) 이미지 대칭 축소 함수
작성일
2002.11.11 10:12:21
조회수
6,427
추천
0
문서 주소
http://hosting.jinbo.net/webbs/view.php?board=manual&id=42
사진자료실 같은 걸 만들때 작은 그림을 클릭하면
큰그림이 나오는 형태로 많이 만들죠...

GD라는 것을 이용해 썸네일을 만들어 봅니다.
단순히 <img> 태그에서 width, height 조절로도 이미지를 줄일 수 있지만
어느정도의 이미지 깨짐을 감안 해야 하고, 원본이 큰 이미지일 경우
갤러리 등에서 표현할 때는 페이지 로딩시 꽤 시간이 걸리게 되죠.

따라서 갤러리나 사진자료실 등에서 썸네일도 같이 등록해야 하는 번거로움
이 있습니다.
이럴 때는 원본만 올리면 썸네일을 생성시켜 주면 사용자의 번거로움을 피
할 수 있습니다.

이 썸네일 만드는 부분에 대한 함수입니다.
사용법은 아래와 같습니다.

사용법:
JPGMakeThum (썸네일의 최대 폭, 썸네일의 최대 높이, 소스화일의 경로, 썸네일을 생성할 경로-이름포함);

예제 :
JPGMakeThum (150,40,"images/test.jpg","images/test_thum.jpg");

주의사항 :
이 함수는 썸네일을 기존이미지의 가로세로폭에 대칭해서 만들어 줍니다.
그러니까 150, 40 을 넣었다고 해서 150x40짜리 이미지가 만들어 지는 것
이 아니라,
150x40 영역 내에 기존의 이미지를 대칭 축소한 이미지를 만드는 것이지요.
(원본의 가로 폭의 비가 썸네일 보다 길 경우, 150x(40이하의 정수) 값의
이미지가 만들어지죠.
썸네일과 원본의 가로세로 비가 같다면 넣은 값 그대로의 썸네일이 만들어
지겠지만요.
<? function JPGMakeThum($maxX,$maxY,$src_file, $tag_file) { // $src_img=ImageCreateFromjpeg($src_file); //원본 $sx=imagesx($src_img); $sy=imagesy($src_img); if ($sx>$maxX || $sy>$maxY) { // 이미지 대칭 축소를 위한 계산 if ($sx>$sy) { $targ_Y=ceil(($sy*$maxX)/$sx); $targ_X=$maxX; } else { $targ_X=ceil(($sx*$maxY)/$sy); $targ_Y=$maxY; } } else { $targ_Y=$sy; $targ_X=$sx; } $dst_img=ImageCreateTrueColor($targ_X, $targ_Y);//빈이미지를 만들어주고 ImageCopyResized($dst_img,$src_img,0,0,0,0,$targ_X,$targ_Y,$sx,$sy); //줄여서 그려준다 Imagejpeg($dst_img,$tag_file,80); //화일로 출력 chmod($tag_file,0707); // 파일 퍼미션 변경 ImageDestroy($dst_img);//메모리 비워주기 ImageDestroy($src_img);//메모리 비워주기 } ?>

이렇게 함수를 만들어 주면 됩니다..