게시글 이미지에 워터마크 로고로 넣기 > 그누보드5 팁자료실

그누보드5 팁자료실

게시글 이미지에 워터마크 로고로 넣기 정보

게시글 이미지에 워터마크 로고로 넣기

본문

/www/config.php 에 다음 코드 추가

define('G5_IMG_PATH', G5_PATH.'/'.G5_IMG_DIR);

/www/lib/thumbnail.lib.php 에서 다음 위치에 코드 추가

// 게시글보기 썸네일 생성
function get_view_thumbnail($contents, $thumb_width=0)
{
~(생략)
// 썸네일 생성
if(!$is_animated)
$thumb_file = thumbnail($filename, $filepath, $filepath, $thumb_width, $thumb_height, false);
else
$thumb_file = $filename;

if(!$thumb_file)
continue;


if ($width) {<br />
$thumb_tag = '<img alt="'.$alt.'" src="'.G5_URL.str_replace($filename, $thumb_file, $data_path).'" />';<br />
} else {<br />
$thumb_tag = '<img alt="'.$alt.'" src="'.G5_URL.str_replace($filename, $thumb_file, $data_path).'" />';<br />
}

 

(위 코드가 sir.kr에서 정상적으로 나오지 않는 경우 아래 그림 코드 참조)

3554188391_1592220836.4771.png

 


(이곳에 다음 코드를 추가)

/*썸네일에 로고를 워터마크로*/

$ALIGN_CENTER = false;
$IMAGE_PATH = G5_PATH.str_replace($filename, $thumb_file, $data_path);
$WATERMARK_PATH = G5_IMG_PATH.'/title_logo.png'; //G5_IMG_PATH : define('G5_IMG_PATH', G5_PATH.'/'.G5_IMG_DIR);
$IMAGE_TYPE = strtolower(substr($IMAGE_PATH, strlen($IMAGE_PATH)-4, 4));
$WATERMARK_TYPE = strtolower(substr($WATERMARK_PATH, strlen($WATERMARK_PATH)-4, 4));
if($IMAGE_TYPE == '.bmp') $image = imagecreatefromwbmp($IMAGE_PATH);
if($IMAGE_TYPE == '.gif') $image = imagecreatefromgif($IMAGE_PATH);
if($IMAGE_TYPE == '.jpg') $image = imagecreatefromjpeg($IMAGE_PATH);
if($IMAGE_TYPE == '.png') $image = imagecreatefrompng($IMAGE_PATH);

if($image) {
if($WATERMARK_TYPE == '.bmp') $watermark = imagecreatefromwbmp($WATERMARK_PATH);
if($WATERMARK_TYPE == '.gif') $watermark = imagecreatefromgif($WATERMARK_PATH);
if($WATERMARK_TYPE == '.jpg') $watermark = imagecreatefromjpeg($WATERMARK_PATH);
if($WATERMARK_TYPE == '.png') $watermark = imagecreatefrompng($WATERMARK_PATH);
if($watermark) {
list($IMAGE_W, $IMAGE_H) = getimagesize($IMAGE_PATH);
list($WATERMARK_W, $WATERMARK_H) = getimagesize($WATERMARK_PATH);
if($ALIGN_CENTER) { // Center
$POS_X = (($IMAGE_W - $WATERMARK_W)/2);
$POS_Y = (($IMAGE_H - $WATERMARK_H)/2);
}
else {
$POS_X = ($IMAGE_W - $WATERMARK_W);
$POS_Y = ($IMAGE_H - $WATERMARK_H);
}
imagealphablending($image, true);
imagecopy($image, $watermark, $POS_X, $POS_Y, 0, 0, $WATERMARK_W, $WATERMARK_H);
//header("Content-type: image/jpeg");
imagejpeg($image,$IMAGE_PATH,100);
imagedestroy($image);
imagedestroy($watermark);
}
}

/*썸네일에 로고를 워터마크로 끝*/

※원본파일이 워터마크가 찍힌 새 이미지로 대체됩니다.

※다음 코드에 의하여 썸네일 코드가 작동하지 않으면 워터마크도 찍히지 않습니다.
// 원본 width가 thumb_width보다 작다면
if($size[0] <= $thumb_width)
continue;

※get_view_thumbnail 함수를 불러올 때마다 작동합니다.(일종의 미완성 코드입니다.) 따라서 워터마크에 투명도가 없다면 매번 동일하게 보이지만 투명도가 적용되어있다면 워터마크가 진해집니다.

위 문제 해결을 원하시는 분이 있어서 내용을 덧붙입니다. 

기존 썸네일 생성 코드를 다음 파일로 옮기시고 간단한 조건 코드를 추가해보시기 바랍니다.

 

/bbs/write_update.php 파일 약 544line 부근

 

        // 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.
        $error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES['bf_file']['error'][$i]);

 

      //이 중간에 아래의 조건을 포함하여 썸네일 생성 코드를 삽입해봅니다.

      if ( preg_match("/\.({$config['cf_image_extension']})$/i", $filename){//이미지 파일인 경우
          //이곳에 썸네일 생성코드
      }

        // 올라간 파일의 퍼미션을 변경합니다.
        chmod($dest_file, G5_FILE_PERMISSION);

 

위 수정 내용은 테스트 해본 적 없습니다. 급하게 위치만 잡아드립니다. 정상작동하는지 확인이 되신분은 댓글로 달아주시면 감사하겠습니다.

 

추천
7

댓글 16개

본문 설명중  G5_IMG_PATH.'/title_logo.png  에 의하면
워터마크 이미지 위치는  그누보드5 / img / title_logo.png  입니다.
이미지 크기에 따라서 워터마크가 나오기도 하고 안 나오기 합니다.
300사이즈 이상에서 출력하도록 설정 할 수는 없는지요?

아무리 연구해 보아도 모르겠습니다.

참고로 가로 600 이상에서는 워터마크가 잘 출력이 됩니다.
도움 부탁합니다.
※다음 코드에 의하여 썸네일 코드가 작동하지 않으면 워터마크도 찍히지 않습니다.
// 원본 width가 thumb_width보다 작다면
if($size[0] <= $thumb_width)
continue;

위 조건때문인 것 같습니다.
해당 게시판의 썸네일 크기를 300이하로 설정하시거나 코드를 수정하시기 바랍니다.
혹시 워터마크에 png파일 적용시 게시물 볼때마다 투명도가 점점 올라가는데요..
게시글 접근할때마다 워터마크가 계속 중첩되는거 같습니다.
혹시 무슨 이유인지 알 수 있을까요?
이 코드는 원본에 워터마크를 찍고(덮어쓰기됨) > 워터마크가 찍힌 이미지로 썸네일을 생성합니다.  다른 유져가 해당 썸네일을 생성하게 되면 다시 워터마크가 찍힌 원본에 워터마크를 찍습니다.
원본을 남기지 않고 워터마크 찍힌 이미지로 덮어쓰는 이유 : 원본이 url상으로 추측 가능하기 때문에 워터마크로 원본을 보호하기 위함
해당 이미지에 워터마크가 찍혔다는 기록을 남겨서 더이상 워터마크가 중첩되지 않도록 하면 되지 않나? : 이미지파일명에 워터마크 여부를 남겨야 하거나 table을 생성하여 관리해야 함. > 귀찮아서 하지 않음
현재 코드상태로는 투명도가 있는 워터마크는 적절치 않습니다.
썸네일생성코드란게www/lib/thumbnail.lib.php 여기 코드를 옮긴다는 말씀인가요?옮겼더니 관리자페이지 썸네일삭제에서 에러가뜹니다,
전체 2,431 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

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