- 정보공유
[그누보드팁] 게시물에 등록된 이미지파일 썸네일 생성 하고 워터마크 처리 하기
첨부된 이미지파일을 썸네일생성하고 워터마크 이미지파일을 별도로 생성하는 소스
//업로드 이미지 가져오기
$view = get_view($write, $board, $board_skin_path);
$thumb_width = 300; // 썸네일 가로 사이즈
$watermark_path = G5_PATH.'/watermark/watermark_logo.png';
$watermark_type = strtolower(substr($watermark_path, strlen($watermark_path)-4, 4));
$v_img_count = count($view['file']);
if($v_img_count) {
for ($i=0; $i<=count($view['file']); $i++) {
$srcfile = G5_DATA_PATH.'/file/'.$bo_table.'/'.$view['file'][$i]['file'];
$waterfile = G5_DATA_PATH.'/file/'.$bo_table.'/water_'.$view['file'][$i]['file'];
if(is_file($srcfile)) {
$size = @getimagesize($srcfile);
if(empty($size))
continue;
// jpg 이면 exif 체크
if($size[2] == 2 && function_exists('exif_read_data')) {
$degree = 0;
$exif = @exif_read_data($srcfile);
if(!empty($exif['Orientation'])) {
switch($exif['Orientation']) {
case 8:
$degree = 90;
break;
case 3:
$degree = 180;
break;
case 6:
$degree = -90;
break;
}
// 세로사진의 경우 가로, 세로 값 바꿈
if($degree == 90 || $degree == -90) {
$tmp = $size;
$size[0] = $tmp[1];
$size[1] = $tmp[0];
}
}
}
// 원본 width가 thumb_width보다 작다면
if($size[0] <= $thumb_width)
continue;
// Animated GIF 체크
$is_animated = false;
if($size[2] == 1) {
$is_animated = is_animated_gif($srcfile);
}
// 썸네일 높이
$thumb_height = round(($thumb_width * $size[1]) / $size[0]);
$filename = basename($srcfile);
$filepath = dirname($srcfile);
// 워터마크 파일 생성
$align_center = true;
$image_type = strtolower(substr($srcfile, strlen($srcfile)-4, 4));
if ($image_type == '.bmp') $image = imagecreatefromwbmp($srcfile);
if ($image_type == '.gif') $image = imagecreatefromgif($srcfile);
if ($image_type == '.jpg') $image = imagecreatefromjpeg($srcfile);
if ($image_type == '.png') $image = imagecreatefrompng($srcfile);
if ($watermark_type == '.bmp') $watermark = imagecreatefromwbmp($watermark_path);
if ($watermark_type == '.gif') $watermark = imagecreatefromgif($watermark_path);
if ($watermark_type == '.jpg') $watermark = imagecreatefromjpeg($watermark_path);
if ($watermark_type == '.png') $watermark = imagecreatefrompng($watermark_path);
if($image && $watermark) {
list($image_w, $image_h) = getimagesize($srcfile);
list($watermark_w, $watermark_h) = getimagesize($watermark_path);
if($align_center) { // Center
$pos_x = (($image_w - $watermark_w)/2);
$pos_y = (($image_h - $watermark_h)/2);
}
else {
$pos_x = ($image_w - $watermark_w);
$pos_y = ($image_h - $watermark_h);
}
imagealphablending($image, true);
imagecopy($image, $watermark, $pos_x, $pos_y, 0, 0, $watermark_w, $watermark_h);
imagejpeg($image, $waterfile, 100);
imagedestroy($image);
imagedestroy($watermark);
}
// 썸네일 생성
if(!$is_animated)
$thumb_file = thumbnail($filename, $filepath, $filepath, $thumb_width, $thumb_height, false);
else
$thumb_file = $filename;
if(!$thumb_file)
continue;
echo '<img src="'.G5_DATA_URL.'/file/'.$bo_table.'/'.$thumb_file.'"/>';
}
}
}