워터마크 문제.. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

워터마크 문제.. 정보

워터마크 문제..

본문

제가 팁(Tip) 게시판에 있는
 
밑에 소스를 참고 했는데 ...
 
bbs/write_update.php
====================================================
109~164행 추가
----------------------------------------------------
// 이미지에 워터마크 넣기
// PHP > 4.0, GD > 2.0.1
// WatermarkImage("원본이미지","겹처지는이미지","투명도","화질",[겹치는이미지위치(0,1,2)]);
function WatermarkImage($CanvasImage, $WatermarkImage /* MUST BE PNG */, $Opacity=30, $Quality=70, $WatermarkLocate=1)
{
  // create true color canvas image:
  $canvas_src = imagecreatefromjpeg($CanvasImage);
  $canvas_w = ImageSX($canvas_src);
  $canvas_h = ImageSY($canvas_src);
  $canvas_img = imagecreatetruecolor($canvas_w, $canvas_h);
  imagecopy($canvas_img, $canvas_src, 0,0,0,0, $canvas_w, $canvas_h);
  imagedestroy($canvas_src);    // no longer needed

  // create true color overlay image:
  $overlay_src = imagecreatefrompng($WatermarkImage);
  $overlay_w = ImageSX($overlay_src);
  $overlay_h = ImageSY($overlay_src);
  $overlay_img = imagecreatetruecolor($overlay_w, $overlay_h);
  imagecopy($overlay_img, $overlay_src, 0,0,0,0, $overlay_w, $overlay_h);
  imagedestroy($overlay_src);    // no longer needed

  // setup transparent color (pick one):
  $black  = imagecolorallocate($overlay_img, 0x00, 0x00, 0x00);
  $white  = imagecolorallocate($overlay_img, 0xFF, 0xFF, 0xFF);
  $magenta = imagecolorallocate($overlay_img, 0xFF, 0x00, 0xFF);   
  // and use it here:
  imagecolortransparent($overlay_img, $white);

  // 워터마크 이미지의 위치(기본값은 가운데 1입니다.)
  switch ($WatermarkLocate) {
case 0:  // 좌측상단
  $ww = 0;
  $wh = 0;
  break;
  case 1: // 가운데
  $ww = ($canvas_w / 2) - ($overlay_w / 2);
  $wh = $canvas_h - ($overlay_h);
  break;
  case 2: // 우측하단
  $ww = $canvas_w - ($overlay_w);
  $wh = $canvas_h - ($overlay_h);
  break;
}

  // copy and merge the overlay image and the canvas image:
  imagecopymerge($canvas_img, $overlay_img, $ww,$wh,0,0, $overlay_w, $overlay_h, $Opacity);

  imagejpeg($canvas_img, $CanvasImage, $Quality);
/*
  // output:
  header("Content-type: image/jpeg");
  imagejpeg($canvas_img, '', $Quality);
*/
  imagedestroy($overlay_img);
  imagedestroy($canvas_img);
}
----------------------------------------------------
238~241행 추가
----------------------------------------------------
// WatermarkImage("원본이미지","겹처지는이미지","투명도","화질",[겹치는이미지위치(0,1,2)]);
            // 겹치는이미지위치값이 0이면 좌측상단, 1이면 가운데, 2이면 우측하단
            $overfile = "$g4[path]/overlay.png";
            WatermarkImage("$dest_file", $overfile, 40, 70, 1);
----------------------------------------------------
//워터마크기능
 
 
 
이 소스 대로 하니깐 ...
 
원본이미지를 첨부해서 사람들이 다운받게 하고
 
view 에서만 워터마크 이미지를 출력해야 하는데~
 
첨부파일도~ 워터마크가 되어 버립니다~ ...
 
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>
<!-- 게시글 보기 시작 -->
<table width="<?=$width?>" align="center" cellpadding="0" cellspcing="0"><tr><td>
<!-- 링크 버튼 -->
<?
ob_start();
?>
<table width='100%' cellpadding=0 cellspacing=0>
<tr height=35>
  <td width=75%>
    <? if ($search_href) { echo "<a href=\"$search_href\"><img src='$board_skin_path/img/search_list.gif' border='0' style='vertical-align:middle;'></a> "; } ?>
    <? echo "<a href=\"$list_href\"><img src='$board_skin_path/img/list.gif' border='0' style='vertical-align:middle;'></a> "; ?>
    <? if ($write_href) { echo "<a href=\"$write_href\"><img src='$board_skin_path/img/write.gif' border='0' style='vertical-align:middle;'></a> "; } ?>
    <? if ($reply_href) { echo "<a href=\"$reply_href\"><img src='$board_skin_path/img/reply.gif' border='0' style='vertical-align:middle;'></a> "; } ?>
    <? if ($update_href) { echo "<a href=\"$update_href\"><img src='$board_skin_path/img/modify.gif' border='0' style='vertical-align:middle;'></a> "; } ?>
    <? if ($delete_href) { echo "<a href=\"$delete_href\"><img src='$board_skin_path/img/delete.gif' border='0' style='vertical-align:middle;'></a> "; } ?>
    <? if ($good_href) { echo "<a href=\"$good_href\" target='hiddenframe'><img src='$board_skin_path/img/good.gif' border='0' style='vertical-align:middle;'></a> "; } ?>
    <? if ($nogood_href) { echo "<a href=\"$nogood_href\" target='hiddenframe'><img src='$board_skin_path/img/nogood.gif' border='0' style='vertical-align:middle;'></a> "; } ?>
    <? if ($scrap_href) { echo "<a href=\"javascript:;\" onclick=\"win_scrap('./scrap_popin.php?bo_table=$bo_table&wr_id=$wr_id');\"><img src='$board_skin_path/img/scrap.gif' border='0' style='vertical-align:middle;'></a> "; } ?>
    <? if ($copy_href) { echo "<a href=\"$copy_href\"><img src='$board_skin_path/img/copy.gif' border='0' style='vertical-align:middle;'></a> "; } ?>
    <? if ($move_href) { echo "<a href=\"$move_href\"><img src='$board_skin_path/img/move.gif' border='0' style='vertical-align:middle;'></a> "; } ?>
  </td>
  <td width=25% align=right>
    <? if ($prev_href) { echo "<a href=\"$prev_href\" title=\"$prev_wr_subject\"><img src='$board_skin_path/img/prev.gif' border='0' style='vertical-align:middle;'></a> "; } ?>
    <? if ($next_href) { echo "<a href=\"$next_href\" title=\"$next_wr_subject\"><img src='$board_skin_path/img/next.gif' border='0' style='vertical-align:middle;'></a> "; } ?>
  </td>
</tr>
</table>
<?
$link_buttons = ob_get_contents();
ob_end_flush();
?>
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
  <td width="10" height="33" bgcolor="#F8F8F8"></td>
  <td width="98%" align="left" bgcolor="#F8F8F8" style='word-break:break-all;'>
    <table width=100% cellpadding=0 cellspacing=0>
    <tr>
      <td style='word-break:break-all;'>  <strong><span id="writeSubject"><? if ($is_category) { echo ($category_name ? "[$view[ca_name]] " : ""); } ?><?=cut_hangul_last(get_text($view[wr_subject]))?></span></strong></td>
      <td width=50><a href="javascript:scaleFont(+1);"><img src='<?=$board_skin_path?>/img/icon_zoomin.gif' border=0 title='글자 확대'></a>
            <a href="javascript:scaleFont(-1);"><img src='<?=$board_skin_path?>/img/icon_zoomout.gif' border=0 title='글자 축소'></a></td>
    </tr>
    </table>   
  </td>
  <td width="4" bgcolor="#F8F8F8"></td>
</tr>
<tr><td colspan=6 height="2"></td></tr>
</table>
<table width="100%" cellspacing="0" cellpadding="0">
<tr height="33">
  <td width="10" bgcolor="#F8F8F8"></td>
  <td width="41%" align="left" bgcolor="#F8F8F8">글쓴이 : <?=$view[name]?><? if ($is_ip_view) { echo " ($ip)"; } ?></td>
  <td width="27%" align="left" bgcolor="#F8F8F8">날 짜 : <?=substr($view[wr_datetime],2,14)?></td>
  <td width="30%" align="center" bgcolor="#F8F8F8">
    <font color="#727272">조회 : <?=$view[wr_hit]?>
    <? if ($is_good) echo "추천 : $view[wr_good]";?>
    <? if ($is_nogood) echo "비추천 : $view[wr_nogood]";?></td>
  <td width="4" bgcolor="#F8F8F8"></td>
  </tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<? if ($trackback_url) { ?>
<tr height=30>
  <td align="right">
    트랙백 주소 : <a href="javascript:clipboard_trackback('<?=$trackback_url?>');" style="letter-spacing:0;" title='이 글을 소개할 때는 이 주소를 사용하세요'><?=$trackback_url?></a> 
    <script language="JavaScript">
    function clipboard_trackback(str) {
      if (g4_is_gecko)
        prompt("이 글의 고유주소입니다. Ctrl+C를 눌러 복사하세요.", str);
      else if (g4_is_ie) {
        window.clipboardData.setData("Text", str);
        alert("트랙백 주소가 복사되었습니다.\n\n<?=$trackback_url?>");
      }
    }
    </script>
  </td>
</tr>
<? } ?>
<?
// 가변 파일
$cnt = 0;
for ($i=0; $i<count($view[file]); $i++) {
  if ($view[file][$i][source]) {
    $cnt++;
    //echo "<tr><td height=22>  <img src='{$board_skin_path}/img/icon_file.gif' style='vertical-align:middle;'> <a href='{$view[file][$i][href]}' title='{$view[file][$i][content]}'><strong>{$view[file][$i][source]}</strong> ({$view[file][$i][size]}), Down : {$view[file][$i][download]}, {$view[file][$i][datetime]}</a></td></tr>";
    echo "<tr><td height=22>  <img src='{$board_skin_path}/img/icon_file.gif' style='vertical-align:middle;'> <a href=\"javascript:file_download('{$view[file][$i][href]}', '{$view[file][$i][source]}');\" title='{$view[file][$i][content]}'><strong>{$view[file][$i][source]}</strong> ({$view[file][$i][size]}), Down : {$view[file][$i][download]}, {$view[file][$i][datetime]}</a></td></tr>";
  }
}
// 링크
$cnt = 0;
for ($i=1; $i<=$g4[link_count]; $i++) {
  if ($view[link][$i]) {
    $cnt++;
    $link = cut_str($view[link][$i], 70);
    echo "<tr><td height=22>  <img src='{$board_skin_path}/img/icon_link.gif' style='vertical-align:middle;'> <a href='{$view[link_href][$i]}' target=_blank><strong>{$link}</strong> ({$view[link_hit][$i]})</a></td></tr>";
  }
}
?>
<tr>
  <td height="150" valign="top" style='word-break:break-all; padding:10px;'>
    <span id="writeContents" class="ct lh">
    <!-- 내용 출력 -->
<?//=$view[content];?>
<?
//오달수님 줄바꿈으로 생기는 불펼요한 상단여백 제거
//http://www.sir.co.kr/bbs/tb.php/g4_tiptech/1866

 
$Que_Vcontent=mysql_query("select wr_content from $write_table where wr_id ='$wr_id'");
$Vcontent= @mysql_result($Que_Vcontent,0,0);
if(!$html) {
  $Vcontent = str_replace("<", "<", $Vcontent);
  $Vcontent = str_replace(">", ">", $Vcontent);
  $Vcontent = nl2br($Vcontent);
  $Vcontent = stripslashes($Vcontent); //\제거
  $Vcontent = str_replace("\t","        ",$Vcontent);
  $Vcontent = str_replace("  "," ",$Vcontent);
}
else if($html==1) {
  $Vcontent = str_replace("\n", "\n", $Vcontent);
  $Vcontent = str_replace("¦", "\|", $Vcontent);
  $Vcontent = str_replace("&", "&&", $Vcontent);
  $Vcontent = str_replace( """, "\"",$Vcontent );
}
else if($html==2) {
  $Vcontent = str_replace("\r", '',$Vcontent);
  $Vcontent = preg_replace('/(?<!>)\n/', "<br />\n",$Vcontent);  
}
// 균이님 원하는곳에 첨부파일 삽입 수정본
for ($i=0; $i<=count($view['file']); $i++) {
  if ($view['file'][$i]['view']) {
    $image_file = $view['file'][$i]['view'];
    $image_pos = "<그림" . ($i+1) . ">";
    $image_pos2 = "<그림" . ($i+1) . ">";
    if (strstr($Vcontent,$image_pos) || strstr($Vcontent,$image_pos2)) {
      $pattern="/($image_pos|$image_pos2)/";
      $Vcontent=preg_replace($pattern,$image_file,$Vcontent);
  }
    else echo $view['file'][$i]['view'] . "<p>";
    }
}
/*본문 링크이미지 원하는 위치에 넣어보기
여분필드에 링크 경로만 구분자를 두어 넣어주고 이것을 가져다가 원하는 위치에 넣는것은 가능할듯,,
일단 기존의 게시물을 모두 변환할수는 없고 또한 바람직한 방법도 아닌듯..
테스트 하실분들은 주석 제거후 원하는 위치에 <링크1> .. 이런식으로 넣어보시면 답이 나옵니다.
//------------------------------
//친절한 서기님 코드
function extract_img($src) {
  $re = '/src[ =]+[\'"]([^\'"]+\.(?:gif|jpg|png|bmp))[\'"]/i';
  preg_match_all($re, $src, &$match, PREG_PATTERN_ORDER);
  return $match[1];
}
//본문에 링크한 이미지 배열
$dest_link = array( 'url' => extract_img($view['wr_content']));
//echo count($dest_link[url])."<br>";
$cnt = 0;
for ($i=0; $i < count($dest_link['url']); $i++) {
  $cnt++;
  //echo $dest_link['url'][$i]."<br>";
  //print_r2($dest_link['url'][$i]);
  if ($dest_link['url'][$i]) {
    //$link_file = "<img src= ".$dest_link['url'][$i]." border=3><p>";
    $link_file = "<img src='".$dest_link['url'][$i]."' name='target_resize_image[]' onclick='image_window(this);' style='cursor:pointer;' title=''><p>";
    $link_pos = "<링크" . ($i+1) . ">";
    $link_pos2 = "<링크" . ($i+1) . ">";
    if (strstr($Vcontent,$link_pos) || strstr($Vcontent,$link_pos2)) {
      $pattern="/($link_pos|$link_pos2)/";
      $Vcontent=preg_replace($pattern,$link_file,$Vcontent);
  }
    else {
      //echo "<img src= ".$dest_link['url'][$i]." border=3><p>";
      echo "<img src= '".$dest_link['url'][$i]."' border='3'><p>";
    }
  }
}
*/
echo $Vcontent;
//오달수님 줄바꿈으로 생기는 불펼요한 상단여백 제거 + 균이님 첨부이미지 위치제어 병합 끝
//------------------------------
// 프린트를 위해 추가
echo "<a href=\"javascript:win_comment('$board_skin_path/control_print.php?bo_table=$bo_table&wr_id=$wr_id' );\" onfocus='this.blur()'>";
echo "<br /><font color=red class=small>*프린트(코멘트를 포함한 내용만 프린트합니다)</font></a>";
?>
       <?// include "$board_skin_path/control_view_basic.php";/*본문표시 제어*/ ?>
       <? include_once "$board_skin_path/list_view_total.basic.php";/*분류사용시 엮인글 모두보기*/?></span>
        <?//echo $view[rich_content]; // 과 같은 코드를 사용할 경우?>
        <!-- 테러 태그 방지용 --></xml></xmp><a href=""></a><a href=''></a></td>
</tr>
<? if ($is_signature) { echo "<tr><td>$signature<br><br></td></tr>"; } // 서명 출력 ?>
</table>
<?
include_once("./view_comment.php");
?>
<?=$link_buttons?>
</td></tr></table>
<script language="JavaScript">
function file_download(link, file) {
    <? if ($board[bo_download_point] < 0) { ?>if (confirm("'"+file+"' 파일을 다운로드 하시면 포인트가 차감(<?=number_format($board[bo_download_point])?>점)됩니다.\n\n포인트는 게시물당 한번만 차감되며 다음에 다시 다운로드 하셔도 중복하여 차감하지 않습니다.\n\n그래도 다운로드 하시겠습니까?"))<?}?>
    document.location.href=link;
}
</script>
<script language="JavaScript" src="<?="$g4[path]/js/board.js"?>"></script>
<script language="JavaScript">
window.onload=function() {
    resizeBoardImage(<?=(int)$board[bo_image_width]?>);
    drawFont();
}
</script>
<!-- 게시글 보기 끝 -->
이 view.skin.php에 적용시켜야 할것 같은데....
 
도저히 감히 안오네요..ㅡ.ㅡ;
 
3일전부터 이리저리 안돌아가는 머리 굴리가면서 하는데도.. 안됩니다.~
 
도와주세요~^^
 
 

댓글 전체

전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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