// 첨부파일 원본 + 110 * 110 crop 사이즈 입니다
// 이미지경로, 이미지명, 워터마크결정, width, height, 이미지타입, 썸내일 width, 썸네일 height, crop&ratio
public function getThumb($path, $name, $folder, $mark = 0, $width, $height, $type, $setWidth = 0,$setHeight = 0, $ratio = "ratio")
{
$setImg = $path."/".$name;
$checkDir = $path."/".$folder;
$thumbImg = $checkDir."/".$name;
// thumb 폴더생성
if(!is_dir(checkDir)){
@mkdir($checkDir);
@chmod($checkDir,0777);
}
switch($type)
{
case 'gif' :
$source = imagecreatefromgif($setImg);
break;
case 'jpeg' :
case 'jpg' :
$source = imagecreatefromjpeg($setImg);
break;
case 'png' :
$source = imagecreatefrompng($setImg);
break;
case 'wbmp' :
case 'bmp' :
$source = imagecreatefromwbmp($setImg);
break;
default :
return false;
}
// 아래있음
$resizeImg = self::GetImgSize($width, $height, $setWidth, $setHeight, $ratio);
// 구해진 크기의 이미지 크기를
if($ratio=="ratio")
{
$resizeWidth = $resizeImg[0];
$resizeHeight = $resizeImg[1];
$thumb = imageCreatetruecolor($resizeWidth, $resizeHeight);
}
// 썸네일 크기 crop
else
{
$resizeWidth = $resizeImg[0];
$resizeHeight = $resizeImg[1];
$thumb = imageCreatetruecolor($setWidth, $setHeight);
}
if($source)
{
$x = 0;
$y = 0;
ImageCopyResampled($thumb, $source, $x, $y, 0, 0, $resizeWidth, $resizeHeight, $width, $height);
// 워터마크 값이 들어오면 워터마크 찍고..
if($mark==1)
{
$markImg = "mark.png";
$imgWaterMark = imagecreatefrompng($markImg);
// 썸네일가로, 썸네일 세로
$overlay_img = imagecreatetruecolor($resizeWidth, $resizeHeight);
imagecopy($overlay_img, $imgWaterMark, 0,0,0,0, $resizeWidth, $resizeHeight);
imagedestroy($imgWaterMark);
$bg = imagecolorallocate($overlay_img, 0x00, 0x00, 0x00);
imagecolortransparent($overlay_img, $bg);
// 썸네일 이미지, 워터마크 이미지
imagecopymerge($thumb, $overlay_img, 0,0,0,0,$resizeWidth,$resizeHeight,50);
imagecolorallocate($thumb, 255, 255, 255);
}
// 파일을 쓰고 끝냄
switch($type)
{
case 'gif' :
$output = imagegif($thumb, $thumbImg, 80);
break;
case 'jpeg' :
case 'jpg' :
$output = imagejpeg($thumb, $thumbImg, 80);
break;
case 'png' :
$output = imagepng($thumb, $thumbImg, 80);
break;
case 'wbmp' :
case 'bmp' :
$output = imagewbmp($thumb, $thumbImg, 80);
break;
}
}
else
{
return false;
}
chmod($thumbImg, 0777);
imagedestroy($source);
imagedestroy($thumb);
return true;
}
/************** 이미지 사이즈 구하기 ***********************/
public function GetImgSize($width, $height, $resizeWidth = 0, $resizeHeight = 0, $ratio="ratio")
{
if(!$resizeWidth) $resizeWidth = 110;
if(!$resizeHeight) $resizeHeight = $resizeWidth;
if($width > $resizeWidth || $height > $resizeHeight)
{
## 크롭이면
if($ratio=='crop')
{
$width_per = $resizeWidth / $width;
$height_per = $resizeHeight / $height;
if($width_per < $height_per)
{
$per = $height_per;
}
else
{
$per = $width_per;
}
$resize[0] = (int)($width * $per);
$resize[1] = (int)($height * $per);
}
## 아니면 비율
else if($ratio=='ratio')
{
// 넓이가 더크면 넓이는 지정사이즈, 높이는 비율에 맞추고
if($width > $height)
{
$resize[0] = $resizeWidth;
$resize[1] = ceil(($height * $resizeWidth) / $width);
}
// 요고는 반대...
else if($width < $height)
{
$resize[0] = ceil(($width * $resizeHeight) / $height);
$resize[1] = $resizeHeight;
}
else
{
$resize[0] = $resizeWidth;
$resize[1] = $resizeHeight;
}
// 구해진 width 가 썸네일 width 보다 클 경우
if($resize[0] > $resizeWidth)
{
$resize[0] = $resizeWidth;
}
// 구해진 height 가 썸네일 height 보다 클 경우
else if($resize[1] > $resizeHeight)
{
$resize[1] = $resizeHeight;
}
}
}
else
{
$resize[0] = $width;
$resize[1] = $height;
}
return $resize;
}
'Web > PHP' 카테고리의 다른 글
이미지 리사이징 하여 저장하기 (0) | 2009.11.23 |
---|---|
디렉토리의 파일 읽어 콘트롤 (0) | 2009.11.23 |
이미지 사이즈 구하기 (0) | 2009.11.16 |
메일보내기 소스 (0) | 2009.11.12 |
날짜관련 (0) | 2009.11.12 |