그누보드 게시판 이미지 업로드시 워터마크 삽입하기 > 홈페이지제작 그누보드

본문 바로가기
사이트 내 전체검색

홈페이지제작 그누보드

그누보드 게시판 이미지 업로드시 워터마크 삽입하기

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 2,938회 작성일 21-10-06 17:32

본문

출처 : https://tonhnegod.tistory.com/249


1. watermark.php

먼저 이 파일을 그누보드 /bbs/ 경로에 업로드합니다.
꼭 /bbs/에 넣을 필요 없습니다. 저는 그냥 편의상 /bbs/에 넣었습니다.
add_water_text()는 워터마크를 텍스트로 삽입, add_watermark_image()는 워터마크를 이미지로 삽입합니다.
$image_path(원본 이미지), $font(폰트TTF파일), $watermark_path(워터마크 이미지)는 반드시 절대 경로로 지정하셔야 합니다.


<?php
function add_watermark_text($image_path, $text, $font) {
   
    // $image_path, $font는 반드시 절대경로로 지정해야함 (url이 아닌 path)
   
    $array_img_chk = array("jpg", "jpeg", "png", "gif", "bmp");
   
    // 이미지 확장자
    $img_ext = explode(".", strrev($image_path));
    $img_ext = strrev($img_ext[0]);
    $img_ext = strtolower($img_ext);
   
    // 이미지 파일인 경우에만 진행
    if(in_array($img_ext, $array_img_chk)) {
 
        if($img_ext == 'jpg' || $img_ext == 'jpeg')
            $create_img = imagecreatefromjpeg($image_path);
 
        if($img_ext == 'png')
            $create_img = imagecreatefrompng($image_path);
 
        if($img_ext == 'gif')
            $create_img = imagecreatefromgif($image_path);
 
        if($img_ext == 'bmp')
            $create_img = imagecreatefromwbmp($image_path);
 
        if($create_img) {
 
            imagealphablending($create_img, true);
           
            // 워터마크 폰트 색상 (RGB 값)
            $color = imagecolorallocate($create_img, 0, 0, 0);
           
            imagettftext($create_img, 20, 0, 2, 20, $color, $font, $text);
 
            /* imagettftext 설명 */
            // 원본 이미지 리소스 : $create_img
            // 폰트 크기 : 20
            // 폰트 각도 : 0
            // 폰트 위치 x : 2
            // 폰트 위치 y : 20
            // 텍스트 색상 : $watermark_color (rgb값)
            // 텍스트 폰트 : $font
            // 텍스트 내용 : $text
 
            //header("Content-type: image/jpeg");
            imagejpeg($create_img, $image_path);
 
            imagedestroy($create_img);
        }
    }
}
 
function add_watermark_image($image_path, $watermark_path) {
   
    // $image_path, $watermark_path 는 반드시 절대경로로 지정해야함 (url이 아닌 path)
   
    $array_img_chk = array("jpg", "jpeg", "png", "gif", "bmp");
   
    // 이미지 확장자
    $img_ext = explode(".", strrev($image_path));
    $img_ext = strrev($img_ext[0]);
    $img_ext = strtolower($img_ext);
   
    // 이미지 파일인 경우에만 진행
    if(in_array($img_ext, $array_img_chk)) {
 
        if($img_ext == 'jpg' || $img_ext == 'jpeg')
            $create_img = imagecreatefromjpeg($image_path);
 
        if($img_ext == 'png')
            $create_img = imagecreatefrompng($image_path);
 
        if($img_ext == 'gif')
            $create_img = imagecreatefromgif($image_path);
 
        if($img_ext == 'bmp')
            $create_img = imagecreatefromwbmp($image_path);
 
        if($create_img) {
           
            // 워터마크 이미지 확장자
            $watermark_img_ext = explode(".", strrev($watermark_path));
            $watermark_img_ext = strrev($watermark_img_ext[0]);
            $watermark_img_ext = strtolower($watermark_img_ext);
 
            if($watermark_img_ext == 'jpg' || $watermark_img_ext == 'jpeg')
                $create_watermark_img = imagecreatefromjpeg($watermark_path);
 
            if($watermark_img_ext == 'png')
                $create_watermark_img = imagecreatefrompng($watermark_path);
 
            if($watermark_img_ext == 'gif')
                $create_watermark_img = imagecreatefromgif($watermark_path);
 
            if($watermark_img_ext == 'bmp')
                $create_watermark_img = imagecreatefromwbmp($watermark_path);
 
            if($create_watermark_img) {
 
                list($img_w, $img_h) = getimagesize($image_path);
                list($watermark_img_w, $watermark_img_h) = getimagesize($watermark_path);
 
                imagealphablending($create_img, true);
               
                // 워터마크 위치 지정
                //$pos_x = 50;
                //$pos_y = 50;
 
                // (예시) 워터마크를 정중앙으로
                $pos_x = ceil(($img_w - $watermark_img_w) / 2);
                $pos_y = ceil(($img_h - $watermark_img_h) / 2);
               
                // 워터마크 삽입
                imagecopy($create_img, $create_watermark_img, $pos_x, $pos_y, 0, 0, $watermark_img_w, $watermark_img_h);
 
                /* imagecopy 설명 */
                // 원본 이미지 리소스 : $create_img
                // 워터마크 이미지 리소스 : $create_watermark_img
                // 워터마크 이미지 x 좌표 : $pos_x
                // 워터마크 이미지 y 좌표 : $pos_y
                // 원본 이미지의 x 좌표 : 0
                // 원본 이미지의 y 좌표 : 0
                // 워터마크 이미지 가로크기 : $watermark_img_w
                // 워터마크 이미지 세로크기 : $watermark_img_h
               
                //header("Content-type: image/jpeg");
                imagejpeg($create_img, $image_path);
 
                imagedestroy($create_img);
                imagedestroy($create_watermark_img);
            }
        }
    }
}
?> 


2. write_update.tail.skin.php
이 파일은 게시판 스킨 폴더 안에 넣습니다.
그누보드 기본 게시판을 예로 들면 /skin/board/basic/gallery/ 여기가 되겠죠.
물론 이 또한 꼭 이 파일, 이 경로를 사용해야 하는 것은 아닙니다.
경우에 따라 소스를 /bbs/write_update.php에 넣어도 되고, if문을 걸어서 특정 경우에만 작동하도록 해도 되고...
필요에 따라서 수정하셔서 사용하세요.
주석 처리된 부분에서 원하는 부분을 풀어주시면 됩니다.


<?php
include_once(G5_BBS_PATH.'/watermark.php');
 
// 업로드한 이미지(첨부파일)에 워터마크 삽입
$sql_bo_file = sql_query(" select * from {$g5['board_file_table']} where bo_table = '{$bo_table}' and wr_id = '{$wr_id}' ");
for ($i=0; $rows_bo_file=sql_fetch_array($sql_bo_file); $i++) {
   
    $uploaded_bo_file = G5_DATA_PATH.'/file/'.$bo_table.'/'.$rows_bo_file['bf_file'];
 
    if( file_exists($uploaded_bo_file) ){
 
        // 워터마크 삽입 함수 (텍스트, 이미지 둘 중 필요한 것을 넣으면 됩니다)
        # add_watermark_text($uploaded_bo_file, "- 워터마크 삽입 테스트. . 조용한 웹 개발자 -", G5_PATH.'/font/폰트파일.TTF');
        # add_watermark_image($uploaded_bo_file, G5_PATH.'/'.G5_IMG_DIR.'/watermark.png');
    }
}
 
// 업로드한 이미지(에디터)에 워터마크 삽입
$editor_img_check = get_editor_image(conv_content(conv_unescape_nl(stripslashes($wr_content)), 1), true);
 
if ($editor_img_check[1]) {
 
    for($i=0; $i<count($editor_img_check[1]); $i++) {
 
        $editor_img = $editor_img_check[1][$i];
 
        preg_match("/src=['\"]?([^>'\"]+[^>'\"]+)/i", $editor_img, $editor_img_m);
        $editor_img_src = $editor_img_m[1];
 
        // 이미지 path 구함
        $editor_img_p = parse_url($editor_img_src);
        if(strpos($editor_img_p['path'], '/'.G5_DATA_DIR.'/') != 0)
            $editor_data_path = preg_replace('/^\/.*\/'.G5_DATA_DIR.'/', '/'.G5_DATA_DIR, $editor_img_p['path']);
        else
            $editor_data_path = $editor_img_p['path'];
 
        $editor_data_srcfile = G5_PATH.$editor_data_path;
 
        if(is_file($editor_data_srcfile)) {
            $editor_data_size = @getimagesize($editor_data_srcfile);
            if(empty($editor_data_size))
                continue;
 
            // 워터마크 삽입 함수 (텍스트, 이미지 둘 중 필요한 것을 넣으면 됩니다)
            # add_watermark_text($editor_data_srcfile, "- 워터마크 삽입 테스트. . 조용한 웹 개발자 -", G5_PATH.'/font/watermark.png');
            # add_watermark_image($editor_data_srcfile, G5_PATH.'/'.G5_IMG_DIR.'/watermark.png');
        }
    }
}
?> 



댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

  • 게시물이 없습니다.

접속자집계

오늘
4,620
어제
4,428
최대
6,642
전체
999,584
contact : webmaster@beautipia.co.kr
Copyright © beautipia.co.kr. All rights reserved.