테스트 사이트 - 개발 중인 베타 버전입니다

워터마크 질문 채택완료

015B 1년 전 조회 1,065

https://tonhnegod.tistory.com/entry/그누보드-게시판-이미지-업로드시-워터마크-삽입하기">https://tonhnegod.tistory.com/entry/그누보드-게시판-이미지-업로드시-워터마크-삽입하기

 

위 게시물을 보고 워터마크 적용을 하려고 하는데요.

 

</p>

<pre data-ke-type="codeblock">

 </pre>

<p><?php</p>

<p>function add_watermark_text($image_path, $text, $font) {</p>

<p>    </p>

<p>    // $image_path, $font는 반드시 절대경로로 지정해야함 (url이 아닌 path)</p>

<p>    </p>

<p>    $array_img_chk = array("jpg", "jpeg", "png", "gif", "bmp");</p>

<p>    </p>

<p>    // 이미지 확장자</p>

<p>    $img_ext = explode(".", strrev($image_path));</p>

<p>    $img_ext = strrev($img_ext[0]);</p>

<p>    $img_ext = strtolower($img_ext);</p>

<p>    </p>

<p>    // 이미지 파일인 경우에만 진행</p>

<p>    if(in_array($img_ext, $array_img_chk)) {</p>

<p> </p>

<p>        if($img_ext == 'jpg' || $img_ext == 'jpeg')</p>

<p>            $create_img = imagecreatefromjpeg($image_path);</p>

<p> </p>

<p>        if($img_ext == 'png')</p>

<p>            $create_img = imagecreatefrompng($image_path);</p>

<p> </p>

<p>        if($img_ext == 'gif')</p>

<p>            $create_img = imagecreatefromgif($image_path);</p>

<p> </p>

<p>        if($img_ext == 'bmp')</p>

<p>            $create_img = imagecreatefromwbmp($image_path);</p>

<p> </p>

<p>        if($create_img) {</p>

<p> </p>

<p>            imagealphablending($create_img, true);</p>

<p>            </p>

<p>            // 워터마크 폰트 색상 (RGB 값)</p>

<p>            $color = imagecolorallocate($create_img, 0, 0, 0);</p>

<p>            </p>

<p>            imagettftext($create_img, 20, 0, 2, 20, $color, $font, $text);</p>

<p> </p>

<p>            /* imagettftext 설명 */</p>

<p>            // 원본 이미지 리소스 : $create_img</p>

<p>            // 폰트 크기 : 20</p>

<p>            // 폰트 각도 : 0</p>

<p>            // 폰트 위치 x : 2</p>

<p>            // 폰트 위치 y : 20</p>

<p>            // 텍스트 색상 : $watermark_color (rgb값)</p>

<p>            // 텍스트 폰트 : $font</p>

<p>            // 텍스트 내용 : $text</p>

<p> </p>

<p>            //header("Content-type: image/jpeg");</p>

<p>            imagejpeg($create_img, $image_path);</p>

<p> </p>

<p>            imagedestroy($create_img);</p>

<p>        }</p>

<p>    }</p>

<p>}</p>

<p> </p>

<p>function add_watermark_image($image_path, $watermark_path) {</p>

<p>    </p>

<p>    // $image_path, $watermark_path 는 반드시 절대경로로 지정해야함 (url이 아닌 path)</p>

<p>    </p>

<p>    $array_img_chk = array("jpg", "jpeg", "png", "gif", "bmp");</p>

<p>    </p>

<p>    // 이미지 확장자</p>

<p>    $img_ext = explode(".", strrev($image_path));</p>

<p>    $img_ext = strrev($img_ext[0]);</p>

<p>    $img_ext = strtolower($img_ext);</p>

<p>    </p>

<p>    // 이미지 파일인 경우에만 진행</p>

<p>    if(in_array($img_ext, $array_img_chk)) {</p>

<p> </p>

<p>        if($img_ext == 'jpg' || $img_ext == 'jpeg')</p>

<p>            $create_img = imagecreatefromjpeg($image_path);</p>

<p> </p>

<p>        if($img_ext == 'png')</p>

<p>            $create_img = imagecreatefrompng($image_path);</p>

<p> </p>

<p>        if($img_ext == 'gif')</p>

<p>            $create_img = imagecreatefromgif($image_path);</p>

<p> </p>

<p>        if($img_ext == 'bmp')</p>

<p>            $create_img = imagecreatefromwbmp($image_path);</p>

<p> </p>

<p>        if($create_img) {</p>

<p>            </p>

<p>            // 워터마크 이미지 확장자</p>

<p>            $watermark_img_ext = explode(".", strrev($watermark_path));</p>

<p>            $watermark_img_ext = strrev($watermark_img_ext[0]);</p>

<p>            $watermark_img_ext = strtolower($watermark_img_ext);</p>

<p> </p>

<p>            if($watermark_img_ext == 'jpg' || $watermark_img_ext == 'jpeg')</p>

<p>                $create_watermark_img = imagecreatefromjpeg($watermark_path);</p>

<p> </p>

<p>            if($watermark_img_ext == 'png')</p>

<p>                $create_watermark_img = imagecreatefrompng($watermark_path);</p>

<p> </p>

<p>            if($watermark_img_ext == 'gif')</p>

<p>                $create_watermark_img = imagecreatefromgif($watermark_path);</p>

<p> </p>

<p>            if($watermark_img_ext == 'bmp')</p>

<p>                $create_watermark_img = imagecreatefromwbmp($watermark_path);</p>

<p> </p>

<p>            if($create_watermark_img) {</p>

<p> </p>

<p>                list($img_w, $img_h) = getimagesize($image_path);</p>

<p>                list($watermark_img_w, $watermark_img_h) = getimagesize($watermark_path);</p>

<p> </p>

<p>                imagealphablending($create_img, true);</p>

<p>                </p>

<p>                // 워터마크 위치 지정</p>

<p>                //$pos_x = 50;</p>

<p>                //$pos_y = 50;</p>

<p> </p>

<p>                // (예시) 워터마크를 정중앙으로</p>

<p>                $pos_x = ceil(($img_w - $watermark_img_w) / 2);</p>

<p>                $pos_y = ceil(($img_h - $watermark_img_h) / 2);</p>

<p>                </p>

<p>                // 워터마크 삽입</p>

<p>                imagecopy($create_img, $create_watermark_img, $pos_x, $pos_y, 0, 0, $watermark_img_w, $watermark_img_h);</p>

<p> </p>

<p>                /* imagecopy 설명 */</p>

<p>                // 원본 이미지 리소스 : $create_img</p>

<p>                // 워터마크 이미지 리소스 : $create_watermark_img</p>

<p>                // 워터마크 이미지 x 좌표 : $pos_x</p>

<p>                // 워터마크 이미지 y 좌표 : $pos_y</p>

<p>                // 원본 이미지의 x 좌표 : 0</p>

<p>                // 원본 이미지의 y 좌표 : 0</p>

<p>                // 워터마크 이미지 가로크기 : $watermark_img_w</p>

<p>                // 워터마크 이미지 세로크기 : $watermark_img_h</p>

<p>                </p>

<p>                //header("Content-type: image/jpeg");</p>

<p>                imagejpeg($create_img, $image_path);</p>

<p> </p>

<p>                imagedestroy($create_img);</p>

<p>                imagedestroy($create_watermark_img);</p>

<p>            }</p>

<p>        }</p>

<p>    }</p>

<p>}</p>

<p>?></p>

<p> </p>

<p>

위에서 언급하는 ↓↓↓↓↓

$image_path(원본 이미지), $font(폰트TTF파일), $watermark_path(워터마크 이미지)는 
반드시 절대 경로로 지정하셔야 합니다.

↑↑↑↑↑↑↑↑


이 부분을 어떻게 해야하는지 이해가 안가서그러는데 워터마크 이미지는 /img/watermark.png 를 적용하려면 어떻게 설정을 해야할지 좀 알려주시면 감사하겠습니다ㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
1년 전

다음과 같은 디렉토리 구조에서

</p>

<p>.

├── bin

├── dev

├── etc

├── home

│   └── user1

│       └── public_html (domain.com DOCUMENT_ROOT)

│           ├── data

│           │   └── dbconfig.php

│           ├── img

│           │   └── watermark.png

│           └── index.php

├── media

├── mnt

├── usr

└── var</p>

<p>


domain.com/img/watermark.png 파일을 
domain.com/index.php 에서 기술할때

 

상대경로는 다음과 같이 표현하고
img/watermark.png
./img/watermark.png

 

절대경로는 다음과 같이 표현합니다.
/home/user1/public_html/img/watermark.png

 

따라서 함수를 호출할때 다음과 같은 형태가 되어야 합니다.

</p>

<p>$image_path = '/home/user1/public_html/img/image.png';</p>

<p>$font = '/absolute/path/from/font.ttf';</p>

<p>$text = 'text';</p>

<p>$watermark_path = '/home/user1/public_html/img/watermark.png';</p>

<p> </p>

<p>add_watermark_text($image_path, $text, $font);

add_watermark_image($image_path, $watermark_path);</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

0
015B
1년 전
감사 합니다.^^

댓글을 작성하려면 로그인이 필요합니다.

1년 전

 /img/watermark.png

-> G5_PATH . '/img/watermark.png'
(or $_SERVER['DOCUMENT_ROOT'] . '/img/watermark.png')

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인