21'C 흐림
서울 강남구
워터마크 파일 경로(위치)
$path_mark_file = $board_skin_path.'/img/watermark.gif'; //워터마크에 사용할 파일
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
/********* 에티터에 워터마크 넣기 **********************/
$por_sql = " select * from {$write_table} where wr_id = '{$wr_id}' ";
$content_por = sql_fetch($por_sql);
$contents = $content_por['wr_content'];
preg_match_all('@<imgs+.*?(srcs*=s*("[^"\\]*(?:[^"\\]*)*"|'[^'\\]*(?:[^'\\]*)*'|[^s]+)).*?>@is', $contents, $match);
$wtm_count = count($match[1]);
for ($k=0; $k <= $wtm_count; $k++ ) {
$marks[$k] = str_replace('"',"",$match[1][$k]);
$marks_image[$k] = str_replace(' /',"",$marks[$k]);
$imgSize[$k] = @GetImageSize($marks_image[$k]);
$imgWidth[] = $imgSize[$k][0];
$imgHeight[] = $imgSize[$k][1];
$image[] = str_replace("src=","",$marks_image[$k]);
$image_name[] = explode("/",$image[$k]);
}
for($j=0; $j<=$wtm_count; $j++) {
$exp = $image_name[$j][6];//원본파일
$exp_img = explode(".",$exp);
//확장자가 이미지 일때만
if ($exp_img[1] == "jpg" or $exp_img[1] == "png" or $exp_img[1] == "gif" or $exp_img[1] == "jpeg" or $exp_img[1] == "JPG" or $exp_img[1] == "PNG" or $exp_img[1] == "GIF" or $exp_img[1] == "JPEG") {
$path_file = G5_PATH.'/data/editor/'.$image_name[$j][5]."/".$image_name[$j][6];//원본파일
$path_mark_file = G5_PATH.'/img/wtm.png';//워터마크에 사용할 파일
$path_save_top_right_file = G5_PATH.'/data/editor/'.$image_name[$j][5]."/".$image_name[$j][6]; //워터마크 처리한 것을 원본에 덮어씌움
add_watermark($path_file, $path_mark_file, $path_save_top_right_file, 0); // 불투명도를 적용하여 워터마크 삽입
} // if
}
/********* 첨부파일에 워터마크 넣기 ************************/
$sql_data = "select * from g5_board_file where bo_table = '$bo_table' and wr_id = '$wr_id' ";
$res_data = sql_query($sql_data);
while ($row_data = sql_fetch_array($res_data)) {
$exp = $row_data['bf_file'];//원본파일
$exp_img = explode(".",$exp);
//확장자가 이미지 일때만
if ($exp_img[1] == "jpg" or $exp_img[1] == "png" or $exp_img[1] == "gif" or $exp_img[1] == "jpeg" or $exp_img[1] == "JPG" or $exp_img[1] == "PNG" or $exp_img[1] == "GIF" or $exp_img[1] == "JPEG") {
$path_file = G5_PATH.'/data/file/'.$bo_table."/".$row_data['bf_file'];
$path_mark_file = G5_PATH.'/img/wtm.gif';//워터마크에 사용할 파일
$path_save_top_right_file = G5_PATH.'/data/file/'.$bo_table."/".$row_data['bf_file']; //워터마크 처리한 것을 원본에 덮어씌움
add_watermark($path_file, $path_mark_file, $path_save_top_right_file, 0); // 불투명도를 적용하여 워터마크 삽입
} // if
}
function add_watermark($original_image_path, $watermark_image_path, $output_image_path, $opacity = null) {
// 이미지 파일 확장자에 따라 적절한 함수로 이미지를 생성(기존 이미지 생성)
$original_extension = strtolower(pathinfo($original_image_path, PATHINFO_EXTENSION));
switch ($original_extension) {
case 'jpg':
case 'jpeg':
$original_image = imagecreatefromjpeg($original_image_path);
break;
case 'png':
$original_image = imagecreatefrompng($original_image_path);
break;
case 'gif':
$original_image = imagecreatefromgif($original_image_path);
break;
default:
die('지원하지 않는 이미지 형식입니다.');
}
// 워터마크 이미지 확장자에 따라 적절한 함수로 워터마크 이미지를 생성(워터마크 이미지 생성)
$watermark_extension = strtolower(pathinfo($watermark_image_path, PATHINFO_EXTENSION));
switch ($watermark_extension) {
case 'jpg':
case 'jpeg':
$watermark_image = imagecreatefromjpeg($watermark_image_path);
break;
case 'png':
$watermark_image = imagecreatefrompng($watermark_image_path);
break;
case 'gif':
$watermark_image = imagecreatefromgif($watermark_image_path);
break;
default:
die('지원하지 않는 워터마크 이미지 형식입니다.');
}
// 워터마크 이미지 크기 얻기
$watermark_width = imagesx($watermark_image);
$watermark_height = imagesy($watermark_image);
// 워터마크를 삽입할 위치 계산 (기존 이미지의 우측 하단에 삽입)
$margin_right = 10;
$margin_bottom = 10;
$original_width = imagesx($original_image);
$original_height = imagesy($original_image);
$watermark_pos_x = $original_width - $watermark_width - $margin_right;
$watermark_pos_y = $original_height - $watermark_height - $margin_bottom;
// 불투명도 적용
if ($opacity != null && is_numeric($opacity) && $opacity >= 0 && $opacity <= 100) {
// 워터마크를 삽입하면서 불투명도 적용
imagecopymerge($original_image, $watermark_image, $watermark_pos_x, $watermark_pos_y, 0, 0, $watermark_width, $watermark_height, $opacity);
} else {
// 워터마크를 삽입
imagecopy($original_image, $watermark_image, $watermark_pos_x, $watermark_pos_y, 0, 0, $watermark_width, $watermark_height);
}
// 출력 파일로 저장 (원본 이미지의 확장자와 같은 형식으로 저장)
switch ($original_extension) {
case 'jpg':
case 'jpeg':
imagejpeg($original_image, $output_image_path);
break;
case 'png':
imagepng($original_image, $output_image_path);
break;
case 'gif':
imagegif($original_image, $output_image_path);
break;
}
// 생성한 이미지 리소스 메모리 해제
imagedestroy($original_image);
imagedestroy($watermark_image);
}