워터마크 관련 질문

워터마크 관련 질문

QA

워터마크 관련 질문

본문

현재 아미나 빌더 사용중인데 

https://amina.co.kr/bbs/board.php?bo_table=tip&wr_id=2469 

 

누가 만든 워터마크 적용해서 워터마크 올리는거 성공했는데 

문제가 발생했네요

 

<?php

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

 

//워터마크 넣기 <-- 첨부파일전용

//png는 안됨, jpg 원본 사용해야함 

//$transparency 워터마크 투명도 

//$jpegQuality 화질 

 

if ($mark == 1){ // 

function waterMark($fileInHD, $wmFile, $transparency = 90, $jpegQuality = 90) { 

 $wmImg  = imageCreateFromGIF($wmFile); 

 $jpegImg = imageCreateFromJPEG($fileInHD); 

$wmX=imageSX($jpegImg) - imageSX($wmImg); 

$wmY=imageSY($jpegImg) - imageSY($wmImg); 

 imageCopyMerge($jpegImg, $wmImg, $wmX, $wmY, 0, 0, imageSX($wmImg), imageSY($wmImg), $transparency); 

 ImageJPEG($jpegImg, $fileInHD, $jpegQuality); 

 

$data_path = G5_PATH."/data/file/$bo_table"; //서버경로임 

$thumb_path = $data_path.'/thumb'; 

 

    $sql=" select * from $g5[board_file_table] where  bo_table = '$bo_table' and wr_id = '$wr_id' order by bf_no asc"; 

    $results = sql_query($sql); 

    for ($i=0; $row=sql_fetch_array($results); $i++)  { 

$file = $data_path .'/'. $row[bf_file]; 

 

 

if ($_FILES[bf_file][name][$i]){ 

waterMark($file,$board_skin_path."/img/****.gif");  // 여기에 워터마크로 사용할 이미지 경로 입력

 

if ($i==0 && $_FILES[bf_file][name][0]){ 

    if (preg_match("/\.(jp[e]?g|gif|png)$/i", $file))    { 

        $size = getimagesize($file); 

        if ($size[2] == 1) 

            $src = imagecreatefromgif($file); 

        else if ($size[2] == 2) 

            $src = imagecreatefromjpeg($file); 

        else if ($size[2] == 3) 

            $src = imagecreatefrompng($file); 

 

        $rate = $board[bo_1] / $size[0]; 

        $height = (int)($size[1] * $rate); 

 

        @unlink($thumb_path.'/'.$wr_id); 

        $dst = imagecreatetruecolor($board[bo_1], $height); 

        imagecopyresampled($dst, $src, 0, 0, 0, 0, $board[bo_1], $height, $size[0], $size[1]); 

        imagepng($dst, $thumb_path.'/'.$wr_id, $board[bo_2]); 

        chmod($thumb_path.'/'.$wr_id, 0606); 

      } 

    } 

  } 

}

 

//워터마크 체크할 파일 인클루드  <---- 에디터전용 워터마크

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] == "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 = $board_skin_path."/img/making.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;

$src2_x = $src_w_small - $mark_w;

$src2_y = $src_h_small - $mark_h;

 

//padding 을 10px 씩 줘야 하므로 x좌표는 왼쪽으로 10 이동 y좌표는 아래로 10 이동

$src2_x -= 20;

$src2_y -= 20;

//$src2_x = ceil(($src_w_small - $mark_w) / 2);

//$src2_y = ceil(($src_h_small - $mark_h) / 2);

 

//워터마크는 투명도 50으로 설정

$result_watermark = imagecopymerge($src2, $mark, $src2_x, $src2_y, 0, 0, $mark_w, $mark_h, 50);

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

}

?>

 

 

문제는 적용한 워터마크 이미지를 변경할수 없네요...

경로를 여기다 만들었는데

/img/watermark.gif 

 

이미지를 수정해서 같은 이름의 파일로 덮어씌워도

기존에 있던 이미지로 워터마크가 올라가네요.

 

소스 자체가 워터마크 이미지를 어디 제3공간에 저장해서 적용시키는거 같은데 

이걸 어떻게 해결해야 하나요?

 

참고로 소스에다가

/img/watermark2.gif

로 경로 변경해서 이미지 올려놓으면 아예 이때부터는 워터마크가 안 올라가네요.

 

다시 watermark.gif 로 소스 변경하면 

 

그대로 처음 올린 이미지로 잘 올라가고요....

 

이게 어디서 문제일까요?

 

그리고 경로를 저 형광칠한 2군데에다 넣는게 맞는지요?

위에한군데만 경로 넣어도 적용되던데요.

 

-------------------------------------------------추가

 

참고로 

 

/img/watermark.gif 

이 경로의 파일을 지워도  

워터마크가 나타나네요.....

 

쿠키처럼 어디다 저장해놓은건지요

이 질문에 댓글 쓰기 :

답변 1

파일 모두 보드스킨의 img 폴더 안에 들어 있으니 해당 파일과 같은 이름으로 만들어 업로드하시고

브라우저 캐시 와 그누보드 캐시등을 지워주시면 새로 업로드한 이미지는 정상적으로 보일겁니다.

 

관리자 > 기본환경  아래 이미지와 같은 일괄삭제를 모두 삭제해 보세요.

1266748538_1614167265.4921.png

답변을 작성하시기 전에 로그인 해주세요.
전체 123,128 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT