웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
Thumbnail 생성하기 - 수정^^;
2003.07.11 01:13
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); // 출력한 그림으로 주소 이동
?>
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); // 출력한 그림으로 주소 이동
?>
댓글 9
-
홍정석
2003.07.11 09:12
이미지 태그를 분석해서 섬네일 생성하는 소스는 아신가요? -
holies
2003.07.11 12:13
이미지 태그라니요? 그게 무엇인지 이해가 안되네요... ^^; -
김상구
2003.07.12 01:15
네.. 주석좀 달아 주세요. 시간 나실때요..^^ -
유창훈
2003.07.12 12:51
Fatal error: Call to undefined function: imagecreatetruecolor() in /free/home/neptune/gd_test.php
이건 무슨 에러인가요..?? -
holies
2003.07.12 19:45
그건 계정에서 GD 2.0.1 이상의 라이브러리를 지원하지 않을 때 생기는 오류예요. -
서은종
2003.07.13 17:28
초보라서 어떻게 응용하는건지 모르겠습니다.
사용할 수 있는 예제좀 올려주셨으면 하는데요 ^^.
저거대로 하니깐. 그림이 아닙니다. 라고만 떠지는데.. 그림이 뜨게 하려면 어케해야져 ㅠㅠ -
holies
2003.07.15 13:10
오호~ 오타가 있었네요. 수정할께요~ -
heon
2003.07.21 21:20
php는 거의 모르는 생짜 초보입니다.
<?php
// 사용 예 : thumbnail.php?file=a.gif&file2=a.jpg
이부분은 어떻게 사용하는지 알고싶습니다. 저같은 경우 가입시 사진외에 iconpic을 입력하면 그것을 자동으로 리사이징(가로45) 해서 저장하게 하고 싶습니다. 지금은45로만 올려야 하도록 되어있거든요.(이렇게 만드는 것만 해도 힘들었습니다.) 이런경우에는 어디에 삽입해야 하는지도 알려주세요. 부탁드립니다. -
이상민
2003.08.01 16:25
그거 이용하면 혹시 이런것두 가능할까요 ?
그러니까 섬네일을 만드는게 아니라 아예 그림크기를 확 줄이는거 말입니다.
요새 디카들이 하도 빵빵해져서 사진한장 올리면 보통 2Mb가 넘어서고 한화면에서 보기가 거의 불가능하고 네화면을 차지하는 경우도 많은데....
아예 사진크기를 줄여서 원본은 버리고 일정크기 이하의 사본을 홈에 저장하는 방식이지요....
한화면이 보통 컴들이 1024*768이니까 그정도로 확 줄이는거지요....
그런거는 어떻게 구현해야 할까요 ?
하도 초보라서....
아 물론 화질은 떨기지 말고 적당히 보상을 해줘야 원본을 올린 사람이 기분이 덜나쁘겠죠 ?
제목 | 글쓴이 | 날짜 |
---|---|---|
동적으로 Extensions(library) 로딩하기 | impre | 2003.09.20 |
include 할시에 주의사항..(경로설정관련) [10] | 피너츠 | 2003.09.14 |
지정한만큼 암호화/해독 하기 [24] | 뒹굴리스트 | 2003.09.10 |
모든파일을 리스트로 만들기; [10] | 플로렐라 | 2003.09.10 |
군대간 친구 남은날짜 구하기 2(복무기간 단축에 따른 수정) [8] | 신민경 | 2003.09.02 |
자료실에 쓸만한 자료용량 환산 [7] | 한승진 | 2003.09.01 |
php 랜덤 이미지 디렉토리 검색으로 편하게.. [3] | 꺼노 | 2003.08.28 |
웹디자이너와 프로그래머가 사이 좋게 코딩하는 방법 [50] | 마이템플릿 | 2003.08.13 |
개판 오분전 정규식(1) | 미친개 | 2003.08.07 |
개판 오분전 정규식(2) [5] | 미친개 | 2003.08.07 |
개판 오분전 정규식(3) [2] | 미친개 | 2003.08.07 |
개판 오분전 정규식(4) | 미친개 | 2003.08.07 |
$i++ !== $i += 1 [14] | 플로렐라 | 2003.08.04 |
체널을 응용해서 tmain.php?tdb=test&db=src 식으로 쓰기 [12] | 9000㎒ | 2003.08.01 |
제로보드 + MSN 메신저 (작성글에 리플이나 코멘트가 달리면 MSN으로 알려준다?) [18] | HungryMania | 2003.08.01 |
스킨 시스템 사용하기 [2] | 김규백 | 2003.07.25 |
다른 사이트에 있는 파일 읽어오기 [50] | 김규백 | 2003.07.25 |
초간단 php 랜덤 이미지 및 랜덤 배경이미지 소스 [6] | 거금도 | 2003.07.24 |
'와 "의 속도 차이?! [6] | holies | 2003.07.12 |
Thumbnail 생성하기 - 수정^^; [9] | holies | 2003.07.11 |