채택완료

모바일에 워터마크

2017-03-06 (월) 14:47:25 3,753

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개

채택된 답변
+20 포인트

답변을 작성하려면 로그인이 필요합니다.