2003-11-17
159 HIT
|
그냥 gd 만을 이용해서 썸네일을 만들어주는 함수입니다. 600x400 이미지를 300x200 으로 만들라고 하면 당연히 비율에 맞게 줄여지겠지만.. 400x600이미지를 300x200으로 만들라고 하면 3/4 비율로 줄인후 세로를 가운데를 중심으로 crop 시켜줍니다. 이미지에서 중요한 부분은 가운데쪽에 있을꺼같아서 가운데를 중심으로 양쪽 또는 위아래를 잘라내도록 했습니다. 특별한 기술이라기 보다 이런걸 찾는분들 쉽게 찾으시라고 올려드립니다.. 검색에 잘 걸리게 키워드도 넣어두지요. ㅎㅎ <!-- 키워드: gd, 이미지, 리사이즈, 썸네일, thumbnail, 비율, 배율 --> 사용법은 thumbnail(파일명,x사이즈,y사이즈) 입니다. 그럼 소스 갑니다. <? /**************************************************************************** * thumbnail.lib.php * 가로세로 비율이 흐트러지지 않고 지정한 크기로 썸네일을 만들어줌 *****************************************************************************/ ## Image LoadJpeg (String $fName); function LoadImage ($fName) { $file_ext = strtolower(substr(strrchr($fName,"."), 1)); //확장자 switch ($file_ext) { case "jpg": case "jpeg": $im = @ImageCreateFromJPEG ($fName); break; case "gif": $im = @ImageCreateFromGIF ($fName); break; case "png": $im = @ImageCreateFromPNG ($fName); break; } if (!$im) { $im = ImageCreate (150, 30); $bgc = ImageColorAllocate ($im, 255, 255, 255); $tc = ImageColorAllocate ($im, 0, 0, 0); ImageFilledRectangle ($im, 0, 0, 150, 30, $bgc); ImageString ($im, 1, 5, 5, "Error loading $fName", $tc); } return $im; } ## Image thumbnail_jpg(String $filepath, int $width, int $height); function thumbnail ($filepath,$width="",$height="") { $size=getimagesize($filepath); //원본 이미지사이즈를 구함 $shr_rateX = $width / $size[0]; $shr_rateY = $height / $size[1]; $base = ($shr_rateX <= $shr_rateY) ? "y" : "x"; $src_im=LoadImage($filepath); if($base == "y") { $new_width=round(($size[0] * $height)/$size[1]); // (가로크기 * 새로운 세로 크기) / 세로크기 $offsetX = round(($new_width - $width) / 2); //각각 좌우로 잘라낼 길이 $offsetY = 0; } if($base == "x") { $size=getimagesize($filepath); //원본 이미지 사이즈 구함 $new_height=round(($size[1] * $width)/$size[0]); // (세로크기 * 새로운 가로크기) / 가로크기 $offsetX = 0; $offsetY = round(($new_height - $height) / 2); // 각각 상하로 잘라낼 길이 } $dst_im=ImageCreate($width,$height); //결과물 이미지 생성 ImageCopyResized($dst_im,$src_im,0,0,$offsetX,$offsetY,$width,$height,ImageSX($src_im)-$offsetX,ImageSY($src_im)-$offsetY); //만들기 return $dst_im; } ?> |

