pc에서는
write_update.skin.php
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
function getImagesUrl($url) {
$img_path = array();
foreach($url as $value) {
$img = parse_url($value);
$img_path[] = $img['path'];
}
return $img_path;
}
// 에디터로 등록한 이미지가 있는지 검색
$query = "SELECT * FROM g5_images WHERE bo_table = '".$bo_table."' AND wr_id = ".$wr_id;
$is_images = sql_fetch($query);
// 에디터로 등록한 글에 이미지가 포함되어 있는지 체크
$contents = stripslashes($_POST['wr_content']);
preg_match_all('@src="([^"]+)"@', $contents, $match);
if($is_images['wr_id']) { // $is_images['wr_id'] 값이 있을 경우 수정이라고 간주함
$image_count = sql_fetch($query);
if($image_count['wr_id']) {
$res = sql_query($query);
while($rows = sql_fetch_array($res)) {
if(!in_array($rows['path'], getImagesUrl($match[1]))) {
unlink("../".$rows['path']);
// 썸네일 삭제 추가
$thumbs = explode("/", $rows['path']);
$thumbs_ext = explode(".", $thumbs[4]);
$thumbnail = glob("../".$thumbs[1]."/".$thumbs[2]."/".$thumbs[3]."/thumb-".$thumbs_ext[0]."*");
unlink($thumbnail[0]);
}
}
// 이전에 등록한 이미지가 있을 경우 전체를 삭제
$remove = "DELETE FROM g5_images WHERE bo_table = '".$bo_table."' AND wr_id = ".$wr_id;
sql_query($remove);
}
}
if(sizeof($match[1]) > 0) { // 에디터로 추가한 이미지가 있을 경우
foreach($match[1] as $value) {
$img = parse_url($value);
$insert = "INSERT INTO g5_images SET bo_table = '".$bo_table."', path = '".$img['path']."', wr_id = ".$wr_id.", reg_date = now()";
sql_query($insert);
}
}
if ($w == 'u') {
insert_point($member['mb_id'], -1, "{$board['bo_subject']} {$wr_id} 글수정", $bo_table, $wr_id, '수정');
}
?>
<?
//워터마크 체크할 파일 인클루드
include_once(G5_LIB_PATH.'/image_proc.function.php');
$sql_data = "select * from g5_board_file where bo_table = '$bo_table' and wr_id = '$wr_id' ";
$res_data = mysql_query($sql_data);
while ($row_data = mysql_fetch_array($res_data)) {
$exp = $row_data[bf_file];//원본파일
$exp_img = explode(".",$exp);
//확장자가 이미지 일때만
if ($exp_img[1] == "jpg" 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/yeo.gif';//워터마크에 사용할 파일
$path_save_top_right_file = G5_PATH.'/data/file/'.$bo_table."/".$row_data[bf_file]; //워터마크 처리한 것을 원본에 덮어씌움
//원본의 이미지 리소스를 받아온다.
list($src, $src_w, $src_h) = get_image_resource_from_file ($path_file);
if (empty($src)) die($GLOBALS['errormsg'] . "<br />\n");
//워터마크에 사용될 이미지 리소스를 받아온다.
list($mark, $mark_w, $mark_h) = get_image_resource_from_file ($path_mark_file);
if (empty($mark)) die($GLOBALS['errormsg'] . "<br />\n");
//원본을 5 분의 1로 축소한 너비와 높이를 구한다.
$src_w_small = $src_w; //리사이징 제거함
$src_h_small = get_size_by_rule($src_w, $src_h, $src_w_small);
//원본의 상단 오른쪽을 기준으로 선명도 100으로 워터마크 처리
if ($src_w > 200) { //width가 200 이하인 이미지는 워터마크 처리안함
$src2 = get_image_resize($src, $src_w, $src_h, $src_w_small, $src_h_small);
if (empty($src2)) die($GLOBALS['errormsg'] . "<br />\n");
$src2_x = $src_w_small - $mark_w;
$src2_y = 0;
//padding 을 10px 씩 줘야 하므로 x좌표는 왼쪽으로 10 이동 y좌표는 아래로 10 이동
$src2_x -= 120;
$src2_y += 120;
//워터마크는 투명도 50으로 설정
$result_watermark = imagecopymerge($src2, $mark, $src2_x, $src2_y, 0, 0, $mark_w, $mark_h, 30);
if ($result_watermark === false) die("워터마크 처리에 실패하였습니다.<br />\n");
$result_save = save_image_from_resource ($src2, $path_save_top_right_file, 100, 2);//저장
if ($result_save === false) die($GLOBALS['errormsg'] . "<br />\n");
@imagedestroy($src2);
}
} // if
}
//워터마크 체크할 파일 인클루드
include_once(G5_LIB_PATH.'/image_proc.function.php');
$content_por = sql_fetch("select * from g5_write_".$bo_table." where wr_id = '$wr_id' ");
$contents = $content_por[wr_content];
preg_match_all('@<img\s+.*?(src\s*=\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] == "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/yeo.gif';//워터마크에 사용할 파일
$path_save_top_right_file = G5_PATH.'/data/editor/'.$image_name[$j][5]."/".$image_name[$j][6]; //워터마크 처리한 것을 원본에 덮어씌움
//원본의 이미지 리소스를 받아온다.
list($src, $src_w, $src_h) = get_image_resource_from_file ($path_file);
if (empty($src)) die($GLOBALS['errormsg'] . "<br />\n");
//워터마크에 사용될 이미지 리소스를 받아온다.
list($mark, $mark_w, $mark_h) = get_image_resource_from_file ($path_mark_file);
if (empty($mark)) die($GLOBALS['errormsg'] . "<br />\n");
//원본을 5 분의 1로 축소한 너비와 높이를 구한다.
$src_w_small = $src_w; //리사이징 제거함
$src_h_small = get_size_by_rule($src_w, $src_h, $src_w_small);
//원본의 상단 오른쪽을 기준으로 선명도 100으로 워터마크 처리
if ($src_w > 200) { //width가 200 이하인 이미지는 워터마크 처리안함
$src2 = get_image_resize($src, $src_w, $src_h, $src_w_small, $src_h_small);
if (empty($src2)) die($GLOBALS['errormsg'] . "<br />\n");
$src2_x = $src_w_small - $mark_w;
$src2_y = 0;
//padding 을 10px 씩 줘야 하므로 x좌표는 왼쪽으로 10 이동 y좌표는 아래로 10 이동
$src2_x -= 10;
$src2_y += 10;
//워터마크는 투명도 50으로 설정
$result_watermark = imagecopymerge($src2, $mark, $src2_x, $src2_y, 0, 0, $mark_w, $mark_h, 30);
if ($result_watermark === false) die("워터마크 처리에 실패하였습니다.<br />\n");
$result_save = save_image_from_resource ($src2, $path_save_top_right_file, 100, 2);//저장
if ($result_save === false) die($GLOBALS['errormsg'] . "<br />\n");
@imagedestroy($src2);
}
} // if
}
?>
이렇게하니깐 파일로 올린 사진에 워터마크가 잘생겼는데요.....
모바일에서는 파일을 올리고 글쓰기버튼을 누르면 화면이 멈춰서 글이 안써져요...
모바일 스킨에서 워터마크를 달고 싶은데 어떡해해야하는지 알려주시면 감사하겠습니다....
답변 1개
답변을 작성하려면 로그인이 필요합니다.