가로, 세로 비율 틀려지지 않고 크기에 맞는 썸네일 만들기
author 관리자 date 2003-11-17 hit 190 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;
}

?>
목록보기
        X  
31  PHP7 클래스 선언 방법  2021-11-03 397
30  PHP7 배열 선언 코드  2021-11-03 629
29  PHP 코드를 최적화하는 40가지 팁 (번역)  2009-12-23 590
28  if , else 조건문 코드 줄이기 (?:)  2009-12-23 438
27  간단한 이메일 보내기 클래스  2008-03-05 558
26  PHP 로 TTF 파일을 웹폰트로 만들기  2006-05-28 565
25  업로드 이미지 사이즈 처리  2006-05-23 481
24  glob -- Find pathnames matching a pattern  2006-05-18 342
23  Thumbnail Image (GD 처리)  2006-05-15 397
22  첨부 이미지(스샷) 사이즈 조정  2006-05-15 276
21  PHP Fuction 검색 창 소스  2006-04-11 359
20  이미지 파일의 가로, 세로 픽셀 알아내기  2006-04-11 319
19  테스트용 변수 출력 소스  2006-04-06 306
18  SMS 발송 - 명단 입력 스크립트  2005-09-16 293
17  리눅스 apache, php 에서 mssql connecting 하기  2005-06-07 494
16  php를 이용하여 서버 백업 프로그램 짜기  2004-05-04 460
15  베이비 헤로스 이벤트 소스  2004-04-28 277
14  세션 생성..  2004-04-21 343
13  제로보드 view.php 분석  2004-04-07 305
12  다중 게시판 검색  2004-03-25 1322
1 2