BOARD

팁·활용

그누보드 이미지 업로드 시 자동 워터마크 삽입 구현 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 0회 작성일 26-09-15 04:39

본문

개요

그누보드4 환경에서 게시판에 업로드되는 이미지에 자동으로 워터마크를 합성하는 기능 구현 방법입니다. PHP GD 라이브러리를 기반으로 동작하며, 겹쳐지는 워터마크 이미지는 PNG 포맷을 사용해야 합니다.

적용 전 백업 안내

코드를 수정하기 전 반드시 원본 bbs/write_update.php 파일을 백업하여 오류 발생 시 즉시 복구할 수 있도록 준비합니다.

워터마크 처리 함수 구현

bbs/write_update.php 파일에 원본 이미지를 불러와 지정한 위치에 워터마크를 합성하는 WatermarkImage 함수를 추가합니다.

function WatermarkImage($CanvasImage, $WatermarkImage, $Opacity=30, $Quality=70, $WatermarkLocate=1) {
    $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);

    $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);

    $black = imagecolorallocate($overlay_img, 0x00, 0x00, 0x00);
    $white = imagecolorallocate($overlay_img, 0xFF, 0xFF, 0xFF);
    $magenta = imagecolorallocate($overlay_img, 0xFF, 0x00, 0xFF);
    imagecolortransparent($overlay_img, $white);

    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;
    }

    imagecopymerge($canvas_img, $overlay_img, $ww,$wh,0,0, $overlay_w, $overlay_h, $Opacity);
    imagejpeg($canvas_img, $CanvasImage, $Quality);
    imagedestroy($overlay_img);
    imagedestroy($canvas_img);
}

업로드 로직 적용 방법

함수 정의 외에 실제 업로드 처리 과정에서 워터마크 함수를 호출하도록 코드를 추가합니다. 워터마크 이미지 파일 경로와 투명도, 화질, 위치 값을 지정할 수 있습니다.

$overfile = "$g4[path]/overlay.png";
WatermarkImage("$dest_file", $overfile, 40, 70, 1);

위치 값은 0(좌측 상단), 1(가운데), 2(우측 하단) 중 선택할 수 있습니다.

적용 후 확인 방법

수정 완료 후 게시판에 테스트 이미지를 업로드하고, 상세 보기 화면에서 지정한 위치와 투명도로 워터마크가 정상적으로 합성되었는지 확인합니다.

주의사항

해당 기능은 PHP GD 라이브러리 환경(2.0.1 이상)이 필요하며, 겹쳐지는 워터마크 이미지는 반드시 PNG 포맷이어야 정상적으로 투명 처리가 적용됩니다.

함께 보면 좋은 글

댓글목록

등록된 댓글이 없습니다.