웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
(GD) 이미지 대칭 축소 함수
2002.11.08 11:52
안녕하세요, 희민닷컴 ( http://www.HeeMin.com ) 의 민이입니다.
GD를 이용해 썸네일을 만들어 봅니다.
다들 아시겠지만 올라온 것이 없는 것 같아서요.
단순히 <img> 태그에서 width, height 조절로도 이미지를 줄일 수 있지만 어느정도의 이미지 깨짐을 감안 해야 하고, 원본이 큰 이미지일 경우 갤러리 등에서 표현할 때는 페이지 로딩시 꽤 시간이 걸리게 되죠.
따라서 갤러리 등에서 썸네일도 같이 등록해야 하는 번거로움이 있습니다.
이럴 때는 원본만 올리면 썸네일을 생성시켜 주면 사용자의 번거로움을 피할 수 있습니다.
이 썸네일 만드는 부분에 대한 함수입니다.
사용법은 아래와 같습니다.
사용법:
JPGMakeThum (썸네일의 최대 폭, 썸네일의 최대 높이, 소스화일의 경로, 썸네일을 생성할 경로-이름포함);
예제 :
JPGMakeThum (150,40,"images/test.jpg","images/test_thum.jpg");
주의사항 :
이 함수는 썸네일을 기존이미지의 가로세로폭에 대칭해서 만들어 줍니다.
그러니까 150, 40 을 넣었다고 해서 150x40짜리 이미지가 만들어 지는 것이 아니라,
150x40 영역 내에 기존의 이미지를 대칭 축소한 이미지를 만드는 것이지요.
(원본의 가로 폭의 비가 썸네일 보다 길 경우, 150x(40이하의 정수) 값의 이미지가 만들어지죠.
썸네일과 원본의 가로세로 비가 같다면 넣은 값 그대로의 썸네일이 만들어 지겠지만요.
이 소스는 희민닷컴( www.HeeMin.com ) > LoveLove > 일기장 의 썸네일 생성에 쓰였습니다. 미리보기는 그 것을 보면 될 듯...
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);//메모리 비워주기
}
P.S 죄송합니다. 한참만에 다시 보니, 뒷부분이 빠진채였네요.. 죄송죄송...
GD를 이용해 썸네일을 만들어 봅니다.
다들 아시겠지만 올라온 것이 없는 것 같아서요.
단순히 <img> 태그에서 width, height 조절로도 이미지를 줄일 수 있지만 어느정도의 이미지 깨짐을 감안 해야 하고, 원본이 큰 이미지일 경우 갤러리 등에서 표현할 때는 페이지 로딩시 꽤 시간이 걸리게 되죠.
따라서 갤러리 등에서 썸네일도 같이 등록해야 하는 번거로움이 있습니다.
이럴 때는 원본만 올리면 썸네일을 생성시켜 주면 사용자의 번거로움을 피할 수 있습니다.
이 썸네일 만드는 부분에 대한 함수입니다.
사용법은 아래와 같습니다.
사용법:
JPGMakeThum (썸네일의 최대 폭, 썸네일의 최대 높이, 소스화일의 경로, 썸네일을 생성할 경로-이름포함);
예제 :
JPGMakeThum (150,40,"images/test.jpg","images/test_thum.jpg");
주의사항 :
이 함수는 썸네일을 기존이미지의 가로세로폭에 대칭해서 만들어 줍니다.
그러니까 150, 40 을 넣었다고 해서 150x40짜리 이미지가 만들어 지는 것이 아니라,
150x40 영역 내에 기존의 이미지를 대칭 축소한 이미지를 만드는 것이지요.
(원본의 가로 폭의 비가 썸네일 보다 길 경우, 150x(40이하의 정수) 값의 이미지가 만들어지죠.
썸네일과 원본의 가로세로 비가 같다면 넣은 값 그대로의 썸네일이 만들어 지겠지만요.
이 소스는 희민닷컴( www.HeeMin.com ) > LoveLove > 일기장 의 썸네일 생성에 쓰였습니다. 미리보기는 그 것을 보면 될 듯...
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);//메모리 비워주기
}
P.S 죄송합니다. 한참만에 다시 보니, 뒷부분이 빠진채였네요.. 죄송죄송...
댓글 5
-
민이
2002.11.12 15:25
-
[콜록]토끼군
2002.12.26 02:01
괜찮군요. :-)
- 토끼군 -
오경래
2003.02.14 02:56
무진장 찾았던 소스인데 어떻게 쓰나요?
홈피 연결도 안되고... 질문할 곳이 마땅히 없네요... -
+_+
2005.10.18 04:32
읍... jpg 외 gif까지만... ㅜㅜ -
미티어
2004.04.09 22:00
ImageCreateTrueColor() 함수는 GD Library 2.0 이상을 필요로 하는군요.. 참고하세요..
제목 | 글쓴이 | 날짜 |
---|---|---|
플레쉬 마우스 오버하면└---┘ 이런식으로 나오는 것 자바스크립트로 제어하기 | Sena㏇ | 2007.02.24 |
비밀번호 입력해야 해당 페이지 보이기 [3] | 이명우 | 2007.02.28 |
Light box 이용하기.. [10] | 이진수 | 2007.03.12 |
자바스크립 동영상 플레이어 2 (네이버 발췌) [4] | 이진수 | 2007.03.28 |
간단한 검색 창입니다. [3] | sunholic | 2007.03.31 |
웬 소리가????(하이퍼링크 효과음) [7] | 김민환 | 2007.04.08 |
스크립트 객체로 AJAX 구현하기 [12] | nextini | 2007.08.20 |
링크 클릭시 점선 → 링크, 이미지, form 태그 동시 적용 [2] | 펠릭스 | 2007.11.28 |
배열 활용하기(초급) | 예뜨락 | 2007.12.03 |
프린트소스 인데요.. [1] | 이영훈346 | 2007.12.12 |
간단한 Ajax 메모
[1]
![]() | 엔시™ | 2007.12.31 |
주민등록번호로 성별/나이/연령대 구분
[4]
![]() | 강병기 | 2008.01.09 |
Javascript 달력 - 거트 캘린더
[4]
![]() | 강세임 | 2008.01.10 |
자신의 홈피에 날씨를 달아보자. [2] | Rising.kr | 2008.01.21 |
자신의 홈피에 통합 검색 순위 (검색어, 음악, 영화, 도서)를 달아보자. [1] | Rising.kr | 2008.01.21 |
자신의 홈페이지에 (검색,사전,로또,주식) 통합버전을 넣어보자. [3] | Rising.kr | 2008.01.21 |
동적 테이블 (행추가, 특정행 삭제) | Juny. | 2008.02.20 |
동적 INPUT | june44.myid.net/ | 2008.03.31 |
프레임홈일때 부분프레임 무단링크 방지하기 [3] | gosoo99 | 2008.04.08 |
웹페이지에 마우스 따라다니는 예쁜 시계를 넣자 [5] | gosoo99 | 2008.04.08 |
이부분을
ImageCopyResized($dst_img,$src_img,0,0,0,0,$targ_X+1,$targ_Y+1,$sx,$sy); //줄여서 그려준다
이렇게 바꿔주면 우측과 하단의 검은 라인이 안 생기네요.
이미지 비율에 따라 소숫점이 나오면, 정수화하기 때문에 생기는 현상이었던 것 같네요.