워터마크 질문 채택완료
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년 전
감사 합니다.^^
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인