PHP & Others

GD이용 작은이미지 만드는 클래스 입니다.

페이지 정보

본문



idhacker
http://juns.maru.net



이번에 겔러리 게시판 만들면서 필요해서 맹글었는데... 중복이면 삭제하겠음.

<?php

/*
제작자 : idhacker
사용상 맘대로 수정하셈. 그 책임은 본인이 지셈.
*/


class thumbImage {

var $real_path = '.';

var $target_path = '.';

var $add_name = 'thumb_';

var $image_quality = 75;

function imageResize($realImage, $target_ext, $width, $height) {

static $extName;
static $src;
static $thumb;

$extName = strtolower( substr( $realImage, -3 ) );

switch($extName) {
case 'peg' :
case 'jpg' :
$src = @ImageCreateFromJPEG($this->real_path . '/' . $realImage) or die('Cannot Open File!');
break;
case 'gif' :
$src = @ImageCreateFromGIF($this->real_path . '/' . $realImage) or die('Cannot Open File!');
break;
case 'png' :
$src = @ImageCreateFromPNG($this->real_path . '/' . $realImage) or die('Cannot Open File!');
break;
default :
echo '이 파일은 변환할 수 없습니다.';
exit;
}

$thumb = ImageCreateTrueColor($width, $height);
ImageCopyResampled($thumb, $src, 0,0,0,0, $width, $height, ImageSX($src), ImageSY($src) );

$realImage = substr($realImage, 0, -3) . $target_ext;

switch($target_ext) {
case 'jpeg' :
case 'jpg' :
@ImageJPEG($thumb, $this->target_path . '/' . $this->add_name . $realImage, $this->image_quality) or die('Writing Error : Check - Directory and Filename.');
break;
case 'gif' :
@ImageGIF($thumb, $this->target_path . '/' . $this->add_name . $realImage, $this->image_quality) or die('Writing Error : Check - Directory and Filename.');
break;
case 'png' :
@ImagePNG($thumb, $this->target_path . '/' . $this->add_name . $realImage, $this->image_quality) or die('Writing Error : Check - Directory and Filename.');
break;
default :
echo '이 확장자는 지원되는 확장자가 아닙니다.';
exit;
}

ImageDestroy($src);
ImageDestroy($thumb);
}
}

# End Class.

/********* 사용법 *********/
$obj = new thumbImage;
$obj->real_path = './test/img'; # 저장된 이미지가 있는곳.
$obj->target_path = './test/thum'; # 썸네일 이미지가 저장될 곳.
$obj->add_name = 'test_'; # 없어도 됨. 기본값 thumb
$obj->image_quality = 80; # 없어도 됨. 기본값 75 (75% 가 가장 압축대 화질이 괸찮아서...)
# imageResize(파일명, 변환될 확장자, 가로사이즈, 세로사이즈)
$obj->imageResize('sample.jpg', 'png', 200, 150); # sample.jpg를 200*150 size의 png로 저장

?>



-- 코멘트 ---
$src = @imagecreatefrom... 으로 열면
if(!$src) { 에러 } 해 줘야겠죠.
안그럼 안열렸을경우 보기흉하게 에러코드가 주욱 쌓이겠네요.

imagesize(), mime_content_type(), exif_imagetype() 셋중 아무거나 골라잡아서 이미지 종류를 알아내어 switch() 하는게 안전하겠죠.
jpg gif 는 모르는 사람들이 잘 헷갈려 적어놓는 확장자니까요. 05/10 18:40:57 
 
 [캐빈] [캐빈]

//.
imagesize() -> getimagesize() 로 변경 되어야 할것 같네요

관련자료

등록된 댓글이 없습니다.
Today's proverb
“무릇 물이란 지세를 따라 흐르되 작은 틈도 놓치지 않고 적시니 지혜를 갖춘 자와 같고, 움직이면서 아래로 흘러가니 예를 갖춘 자와 같으며, 어떤 깊은 곳도 머뭇거리지 않고 들어가니 용기를 가진 자와 같고 장애물이 막혀서 갇히면 고요히 맑아지니 천명을 아는 자와 같으며, 험한 곳을 거쳐 멀리 흐르지만 끝내 남을 허물어뜨리는 법이 없으니 덕을 가진 자와 같다. 천지는 이것으로 이루어지고, 만물은 이것으로 살아가며, 나라는 이것으로 안녕을 얻고, 만사는 이것으로 평안해지며, 만물은 이것으로 바르게 되는 것이다. 이것이 지혜로운 자가 물을 좋아하는 이유이다.” (한영, <<한시외전>>)