RadarURL

조회 수 4729 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

얼마전 수피아님의 블로그를 방문해보니, 불펌으로 인한 트래픽 오버문제로 속상해하시는 모습을 보았다. 퍼가는 사람이야 아무런 문제의식도 없이 그냥 긇어가는 것이겠지만, 설치형 블로그를 운영하는 블로거의 입장에선 정말 골치아픈 문제가 아닐수 없다.

그러다가 오늘, 우연히 올블을 통해 워터마크를 삽입하는 방법을 알게되어, 이 곳에 소개해 놓는다.

원문 페이지 : 블로그 공장 포럼

먼저 ".htaccess"라는 이름의 파일을 만들어 아래와 같이 쓴다.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} .*jpg$|.*gif$|.*png$|.*jepg$|.*bmp$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !loose\.hubweb\.net [NC]
RewriteCond %{HTTP_REFERER} !loose\. [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
RewriteRule (.*) image.php?image=$1


4번째부터 6번째 줄까지는 주소를 적는 부분이다. 위 소스에서는 loose.hubweb.net과 google에게 링크를 허용하였다. 주소를 적는 방법은 "."이 들어간 곳에 \를 써 주면 된다.

예) http://loose.hubweb.net/tatter   ->  loose\.hubweb\.net/tatter

image.php?image=$1 는 허가된 주소외의 페이지에서 그림을 읽어갈때, 이미지와 워터마크를 합성하여 보여주는 곳이다. 그냥 링크만 차단시키고 싶은 경우, 아무 글자나 써 주면 된다.

다음으로 image.php 파일을 만든다.

<?
define ("WATERMARK", "watermark.jpg");

header("Content-type: image/jpeg");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

$pic = strip_tags( $_GET['image'] );

$image_url = urldecode($pic);

if (!@fopen($image_url, "r")) {
$dst_img = imagecreatefromjpeg(WATERMARK);
$res = imagejpeg($dst_img, "", 100);
die();
}

$file = pathinfo($image_url);
switch(strtoupper($file["extension"])) {
case "JPG":
$src_img = imagecreatefromjpeg($image_url);
break;
case "JEPG":
$src_img = imagecreatefromjpeg($image_url);
break;
case "BMP":
$src_img = imagecreatefromjpeg($image_url);
break;
 case "GIF":
$src_img = imagecreatefromgif($image_url);
break;
case "PNG":
$src_img = imagecreatefrompng($image_url);
break;
}

$src_w = imagesx($src_img);
$src_h = imagesy($src_img);

$portion = $src_h / $src_w;
$dest_w = 300;
$dest_h = round($dest_w * $portion);

$dst_img = imagecreatetruecolor($dest_w, $dest_h);
imagecopyresized($dst_img, $src_img, 0, 0, 0, 0, $dest_w, $dest_h, $src_w, $src_h);

$watermark = imagecreatefromjpeg(WATERMARK);

$watermark_w = imagesx($watermark);
$watermark_h = imagesy($watermark);

$overlay_img = imagecreatetruecolor($watermark_w, $watermark_h);
imagecopy($overlay_img, $watermark, 0,0,0,0, $watermark_w, $watermark_h);
imagedestroy($watermark);

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

$offsetX = $dest_w - $watermark_w - 3;
$offsetY = $dest_h - $watermark_h - 3;

imagecopymerge($dst_img,$overlay_img,$offsetX,$offsetY,0,0,$watermark_w,$watermark_h, 100);
imagedestroy($overlay_img);

$res = imagejpeg($dst_img, "", 100);
imagedestroy($dst_img);
?>


중간을 보면

$dest_w = 300;
$dest_h = round($dest_w * $portion);

라는 부분이 있는데, 이 곳이 워터마크 그림의 사이즈를 조절하는 곳이다. 식을 보면 가로 사이즈는 300이고, 높이는 가로사이즈에 맞추어 조절하도록 되어있는데, 워터마크 그림사이즈에 맞추어 원하는 사이즈를 직접 써 넣으면
된다.

이제 마지막으로 워터마크를 제작한다. 적당한 이미지로 제작한뒤, watermark.jpg로 저장하여 준다.

자, 그럼, 이제 작업은 다 끝났다. 위의 순서대로 작업을 마치었다면, .htaccess파일과 image.php, 그리고 watermark.jpg 파일이 있을것이다. 이 파일을 태터폴더 하위의 /attach/1 에 모두 업로드한다. 그럼 끝.

아래에 작업한 파일을 첨부하니, 혹 이해가 안가시는 분들은 참고하시길 바란다. ^^

 

출처 : http://sogmi.com/501

?

공부 게시판

공부에 도움되는 글을 올려주세요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.18 927549
846 소프트웨어 엑셀(excel) MID, MIDB 함수를 이용해서 문자열 자르기 JaeSoo 2012.03.16 6564
845 네트워크 IEEE 802. Standard (표준) 종류 JaeSoo 2012.03.13 4850
844 네트워크 802.3, IEEE 802.3 Institute of Electrical and Electronic Engineers 802.3 이더넷 LAN 표준 file JaeSoo 2012.03.13 5041
843 논문 Springer editorial manager 에서 submission 이후 진행 방법 JaeSoo 2012.03.13 4850
842 소프트웨어 Microsoft Word(워드) 2010 각주 및 미주 삽입 또는 만들기 file JaeSoo 2012.03.13 8657
841 소프트웨어 MS Word(워드) 변경 내용 및 메모를 표시한 채 문서 인쇄 JaeSoo 2012.03.11 11266
840 소프트웨어 word 2010양식으로 저장 후 수식개체(mathtyle)수직 정렬 문제 file JaeSoo 2012.03.10 5044
839 웹 프로그래밍 .htaccess 를 이용한 이미지 핫링크 예방법 file JaeSoo 2012.03.07 5542
» 웹 프로그래밍 제로보드XE, 테터 등 설치형 홈페이지, 블로그에 워터마크 삽입하기 file JaeSoo 2012.03.07 4729
837 웹 프로그래밍 SetEnvIf 와 SetEnvIfNocase 의 차이 JaeSoo 2012.03.07 4624
836 웹 프로그래밍 XE에서 외부에서 자료를 링크거는 행위 방지 JaeSoo 2012.03.07 4520
835 웹 프로그래밍 동영상 외부 링크 금지 JaeSoo 2012.03.07 5500
834 웹 프로그래밍 .htaccess 사용해서 이미지 외부링크 막기 JaeSoo 2012.03.07 6839
833 웹 프로그래밍 아파치 리라이트(rewrite) 엔진과 워터마킹을 이용한 이미지 무단 링크 방지 JaeSoo 2012.03.07 3929
832 경제 소아 표준 성장 도표 (신체 발육 표준치 : 체중, 신장, 체질량지수, 머리둘레) file JaeSoo 2012.03.06 13053
831 보안 강제적 접근통제(MAC, Mandatory Access Control), 임의적 접근통제(DAC, Discretionary Access Control), 역할기반 접근통제(RBAC, Role Based Access Control) JaeSoo 2012.03.05 5690
830 논문 주요 국제 학술지 양식 모음 file JaeSoo 2012.03.04 8933
829 소프트웨어 내부 단편화(internal fragmentation), 외부 단편화(external fragmentation) JaeSoo 2012.03.04 6032
828 하드웨어 레이드카드 IBM ServeRAID M5015 JaeSoo 2012.03.04 5389
827 기타 게리멘더링(Gerrymandering)이란? file JaeSoo 2012.02.29 4652
Board Pagination Prev 1 ... 77 78 79 80 81 82 83 84 85 86 ... 124 Next
/ 124


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너