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
사람이 친구를 위하여 목숨을 버리면 이보다 더 큰 사랑은 없다. (성서)