YesYo.com MintState Forums
뒤로    Go3.co.kr MintState BBS > Tech > PHP
검색
멤버이름    오토
비밀번호 
 

워터마크 출력

페이지 정보

작성자 MintState 댓글 0건 조회 12,178회 작성일 08-11-03 11:32

본문

워터마크 출력

폰트를 이용한 글자 입히기
01<?
02$font_size = 100; // 글자 크기
03$opacity = 10; // 투명도 높을수록 불투명
04$font_path = "arial.ttf"//폰트 패스
05$string = "waterMark"// 찍을 워터마크
06 
07$image = "11.jpg"; //이미지
08 
09$image_name = explode(".",$image);
10$image_targ = $image_name[0]."_marked.jpg"// 워터마크가 찍혀 저장될 이미지
11 
12$image_org = $image; // 원본 이미지를 다른 이름으로 저장
13$image = imagecreatefromjpeg($image); // JPG 이미지를 읽고
14 
15$w = imagesx($image);
16$h = imagesy($image); 
17 
18$text_color = imagecolorallocate($image,100,100,100); // 텍스트 컬러 지정
19 
20// 적당히 워터마크가 붙을 위치를 지정
21$text_pos_x = $font_size;
22$text_pos_y = $h - $font_size;
23 
24imagettftext($image, $font_size, 0, $text_pos_x, $text_pos_y, $text_color, $font_path, $string);  // 읽은 이미지에 워터마크를 찍고
25  
26$image_org = imagecreatefromjpeg($image_org); // 원본 이미지를 다시한번 읽고
27   
28imagecopymerge($image,$image_org,0,0,0,0,$w,$h,$opacity); // 원본과 워터마크를 찍은 이미지를 적당한 투명도로 겹치기
29 
30imagejpeg($image, $image_targ, 90); // 이미지 저장. 해상도는 90 정도
31   
32imagedestroy($image);
33imagedestroy($image_org);
34 
35  
36echo "<img src=$image_targ>"; // 워터마크가 찍혀 저장된 이미지 출력
37?>


이미지 입히기
01<?
02/******************************************************************************
03Program: waterMark.php
04Description : 서비스 이미지에 워터마크 적용하기
05Author      : Ryu Jee Hyoung
06CreateDate  : 2007.01.18
07CopyRight   : Copyright(c) 청명공자 All Right Reserved.
08UpdateDate  :
09Todo        :
10 워터마크가 적용되도록 이미지 URL 변경
11 - 사용법
13 > $img_url = waterMark($img_url);
14 > echo $img_url;
15******************************************************************************/
16function waterMark($image,$thumbW=null,$thumbH=null)
17{
18  $argTmp = $thumbW."|".$thumbH."|".$image;
19  $arg = base64_encode($argTmp);
20  $arg = urlencode($arg);
21  $img_info = @getImageSize($image);
22  if($img_info[2] == 6) {
23    $chgURL = $image;
24  }
25  else {
26    $chgURL = "http://DOMAIN/imgView.php?image=$arg";
27  }
28 
29  return $chgURL;
30}
31 
32$img_url = 'http://DOMAIN/11.png';
33$img_url = waterMark($img_url);
34echo "<img src='".$img_url."'>";
35?>


001<?
002/******************************************************************************
003Program: imgView.php
004Description : 서비스 이미지에 워터마크 적용하기
005Author      : Ryu Jee Hyoung
006CreateDate  : 2007.01.18
007CopyRight   : Copyright(c) 청명공자 All Right Reserved.
008UpdateDate  :
009Todo        :
010******************************************************************************/
011flush();
012  
013# 특정경로에 워터마크 처리할 이미지가 존재해야 함!!
014# 워터마크 이미지는 필히 JPG 여야 합니다.
015define("WATERMARK", "/home/NAME/public_html/12.jpg");
016  
017header("Content-type: image/jpeg");
018header("Cache-Control: no-store, no-cache, must-revalidate");
019header("Cache-Control: post-check=0, pre-check=0", false);
020header("Pragma: no-cache");
021  
022$photoTmp = base64_decode($image);
023$photo = $photoTmp; # waterMarkImage($arg) 이런 형식(w,h가 지정이 안된 경우)으로 사용된 것
024if (ereg("\|",$photo)) {
025  # waterMarkImage($arg,100,50) 이런 형식(w,h가 지정된 경우)으로 사용된 것
026  list($w1,$h1,$photo) = explode("|", $photoTmp, 3);
027  $thumb_w1 = $w1;
028  $thumb_h1 = $h1;
029}
030$photo = urldecode($photo); # %C24%.... 이런식으로 encode되어 오는 파일오류를 방지
031 
032$img_info = getImageSize($photo);
033$photo = ereg_replace("%","%25",$photo);
034$image_url = urldecode($photo);
035if (!@fopen($image_url, "r")) {
036  $dst_img = imagecreatefromjpeg(WATERMARK);
037  $res = imagejpeg($dst_img, "", 100);
038  die();
039}
040$file = pathinfo($image_url);
041if ($img_info[2] == "1") {
042  $file["extension"] = "GIF";
043}
044else if ($img_info[2] == "2") {
045  $file["extension"] = "JPG";
046}
047else if ($img_info[2] == "3") {
048  $file["extension"] = "PNG";
049}
050switch(strtoupper($file["extension"])) {
051  case "JPEG":
052    $src_img = imagecreatefromjpeg($image_url);
053    break;
054  case "JPG":
055    $src_img = imagecreatefromjpeg($image_url);
056    break;
057  case "GIF":
058    $src_img = imagecreatefromgif($image_url);
059    break;
060  case "PNG":
061    $src_img = imagecreatefrompng($image_url);
062    break;
063}
064$src_w = imagesx($src_img);
065$src_h = imagesy($src_img);
066$portion = $src_h / $src_w;
067  
068# w, h값이 있으면 thumbnail로 보여주기
069if(!is_numeric($w1) || empty($w1)) $w1 = $img_info[0];
070if(!is_numeric($h1) || empty($h1)) $h1 = $img_info[1];
071$dest_w = $w1;
072$dest_h = $h1;
073$dst_img = imagecreatetruecolor($dest_w, $dest_h);
074  
075# 배경이미지 흰색으로 채우는 부분 - 투명이미지가 이상하게 보이는 현상을 방지
076$white = imagecolorallocate($dst_img,255,255,255);
077imagefill($dst_img, 0, 0, $white);
078 
079imagecopyresized($dst_img, $src_img, 0, 0, 0, 0, $dest_w, $dest_h, $src_w, $src_h);
080imagedestroy($src_img);
081flush();
082$watermark = imagecreatefromjpeg(WATERMARK);
083$watermark_w = imagesx($watermark);
084$watermark_h = imagesy($watermark);
085$resize_w = $watermark_w;
086$resize_h = $watermark_h;
087if ($dest_w < 100) {
088  $resize_w = $watermark_w / 2;
089  $resize_h = $watermark_h / 2;
090}
091else if ($dest_h < 100) {
092  $resize_w = $watermark_w / 2;
093  $resize_h = $watermark_h / 2;
094}
095$overlay_img = imagecreatetruecolor($watermark_w, $watermark_h);
096imagecopyresized($overlay_img, $watermark, 0, 0, 0, 0, $resize_w, $resize_h, $watermark_w, $watermark_h);
097imagedestroy($watermark);
098$white = imagecolorallocate($overlay_img, 0xFF, 0xFF, 0xFF);
099$black = imagecolorallocate($overlay_img, 0x00, 0x00, 0x00);
100imagecolortransparent($overlay_img, $black);
101  
102# 워터마크 중앙에 배치
103$offsetX = ($dest_w - $watermark_w - 3) / 2;
104$offsetY = ($dest_h - $watermark_h - 3) / 2;
105# 워터마크 좌상단에 배치
106# $offsetX = 3;
107# $offsetY = 3;
108# 워터마크 우상단에 배치
109# $offsetX = $dest_w - $watermark_w - 3;
110# $offsetY = $dest_h - $watermark_h - 3;
111  
112# w, h값이 있으면 thumbnail로 보여주되 워터마크 적용안함!!
113if (empty($thumb_w1) && empty($thumb_h1)) imagecopymerge($dst_img,$overlay_img,$offsetX,$offsetY,0,0,$watermark_w,$watermark_h, 30);
114imagedestroy($overlay_img);
115$res = imagejpeg($dst_img, "", 100);
116imagedestroy($dst_img);
117flush();
118exit;
119?>

댓글목록

등록된 댓글이 없습니다.

Total 165건 3 페이지
PHP 목록
번호 제목 글쓴이 조회 날짜
115 MintState 14819 11-10
114 MintState 16474 11-10
113 MintState 17414 11-10
112 MintState 21551 11-10
111 MintState 12762 11-10
110 MintState 30988 11-10
109 MintState 16203 11-10
108 MintState 14945 11-10
107 MintState 14853 11-10
106 MintState 12885 11-10
105 MintState 21105 11-10
104 MintState 13257 11-10
103 MintState 13106 11-10
102 MintState 20346 11-10
101 MintState 11756 11-10
100 MintState 12817 11-10
99 MintState 20833 11-10
98 MintState 14584 11-10
97 MintState 13190 11-10
96 MintState 11712 11-10
95 MintState 13632 11-10
열람중 MintState 12179 11-03
93 MintState 11643 11-03
92 MintState 12826 11-03
91 MintState 15835 11-03
게시물 검색
모바일 버전으로 보기
CopyRight ©2004 - 2025, Go3.co.kr MintState. ™