-
- Header("Content-type: image/png") /*이미지가 출력됨을 브라우저에 알립니다*/
- $ im = imagecreate(400, 300); /*이미지 크기 정의*/
- $gray = ImageColorAllocate($im, 235, 235, 235)
- $pink = ImageColorAllocate($im , 255, 128, 255);
- $fontfile = "simkai.ttf"
- /* $fontfile 글꼴 경로는 운영 체제에 따라 simhei.ttf(흑체), SIMKAI.TTF( italic), SIMFANG.TTF(송나라 모방), SIMSUN.TTC(송나라 및 신송나라) 및 GD에서 지원하는 기타 중국어 글꼴*/
- $str = iconv('GB2312','UTF-8', '중국어 워터마크'); /*gb2312 문자 세트를 UTF-8 문자로 변환*/
- ImageTTFText($im, 30, 0, 100, 200, $pink, $fontfile, $str); /* 중국어 워터마크 추가*/
- Imagepng($im)
- ImageDestroy($im)
- ?>
-
코드 복사
예제 2, PHP 이미지 워터마크 코드.
- // *********************** ***************** //
- // 기능: 이미지에 텍스트 추가
- // 매개변수: $img 이미지 파일 이름
- // $new_img 이미지 파일 이름으로 저장, 비어 있으면 이미지를 저장하지 않는다는 의미
- // $text string content
- // text_size 문자열 크기
- // text_angle 글꼴 문자열 출력 각도
- // text_x 문자열 출력 x 좌표
- // text_y 문자열 출력 y 좌표
- // $text_font 글꼴 파일 이름
- // $r, $g, $b 문자열 색상 RGB 값
- // *** *********************************** //
- 함수 img_text($img, $new_img , $ text, $text_size, $text_angle, $text_x, $text_y, $text_font, $r, $g, $b){
- $text=iconv("gb2312","UTF-8",$text) ; 🎜>Header("콘텐츠 유형: image/gif");
- $im = @imagecreatefromstring(file_get_contents($img)) 또는 die("이미지를 열지 못했습니다!")
- $color = ImageColorAllocate( $im, $r,$g,$b);
- //ImageTTFText(int im, int size, int angle, int x, int y, int col, 문자열 글꼴 파일, 문자열 텍스트):
- / / 이 기능은 TTF(TrueType Fonts) 글꼴 텍스트를 이미지에 씁니다.
- //매개변수: size는 글꼴의 크기입니다.
- // angle은 글꼴의 각도로, 시계 방향으로 계산됩니다. 0도는 가로(왼쪽에서 오른쪽으로), 90도는 아래쪽에서 텍스트입니다. top ;
- // 두 매개변수 x와 y는 텍스트의 좌표 값입니다(원점은 왼쪽 상단입니다).
- // col은 텍스트의 색상입니다. Fontfile은 글꼴 파일의 이름입니다.
- / /text는 문자열 내용입니다.
- ImageTTFText($im, $text_size, $text_angle, $text_x, $text_y, $color, $text_font, $text)
- if ($new_img==""):
- ImageGif($im ); // 이미지를 저장하지 않고 표시만 합니다.
- ImageGif($im,$new_img) // 이미지를 저장하지만 표시하지 않습니다.
- ImageDestroy( $im); / /그래픽 종료, 메모리 공간 해제
- ?>
-
-
- 코드 복사
-
-
예제 3, PHP 이미지 워터마크는 PHP 텍스트 워터마크 효과를 지원합니다.
-
- /*
- * 기능: PHP 이미지 워터마크(워터마크는 이미지 또는 텍스트를 지원함)
- * 매개변수:
- * $groundImage 배경 이미지, 즉 워터마크가 필요한 이미지는 현재 GIF, JPG 및 PNG 형식만 지원합니다.
- * $waterPos 워터마크 위치는 10가지 상태이며 0은 임의 위치입니다. * 1은 왼쪽 상단, 2는 상단이 중앙, 3은 상단이 오른쪽을 의미합니다.
- * 4는 왼쪽 중앙, 5는 중앙, 6은 중앙입니다. right;
- * 7은 왼쪽 하단, 8은 하단 중앙, 9는 하단이 오른쪽입니다.
- * $waterImage 이미지 워터마크, 즉 다음과 같이 사용되는 이미지입니다. 워터마크는 현재 GIF, JPG 및 PNG 형식만 지원합니다.
- * $waterText 텍스트 워터마크, 즉 텍스트는 워터마크로 사용되며, ASCII 코드를 지원하고, 중국어를 지원하지 않습니다.
- * $textFont 텍스트 크기. , 값은 1, 2, 3, 4 또는 5, 기본값은 5입니다.
- * $textColor 텍스트 색상, 값은 16진수 색상 값, 기본값은 #FF0000(빨간색)입니다. GD 2.0 지원, FreeType 지원, GIF 읽기, GIF 생성, JPG, PNG
- * $waterImage와 $waterText를 동시에 사용하지 않는 것이 가장 좋습니다. 예, $waterImage를 먼저 사용합니다.
- * $waterImage가 유효하면 $waterString, $stringFont 및 $stringColor 매개변수가 적용되지 않습니다.
- * 워터마크가 적용된 이미지의 파일명은 $groundImage와 동일합니다.
- * 작성자: longware @ 2004-11-3 14:15:13
- */
- 함수 imageWaterMark($groundImage,$waterPos=0,$waterImage=””,$waterText=””,$ textFont=5,$textColor=”#FF0000″)
- {
- $isWaterImage = FALSE;
- $formatMsg = “이 파일 형식은 아직 지원되지 않는 이미지 처리 소프트웨어를 사용하여 이미지를 GIF로 변환하세요. 또는 JPG, PNG 형식입니다.”;
- //워터마크 파일 읽기
- if(!emptyempty($waterImage) && file_exists($waterImage))
- {
- $isWaterImage =
- $water_info = getimagesize($ waterImage );
- $water_w = $water_info[0];//워터마크 이미지 너비 가져오기
- $water_h = $water_info[1];//워터마크 이미지 높이 가져오기
- switch($ water_info[2 ])//워터마크 이미지 형식 가져오기
- {
- case 1:$water_im = imagecreatefromgif($waterImage);break
- case 2:$water_im = imagecreatefromjpeg($waterImage); break;
- 사례 3:$water_im = imagecreatefrompng($waterImage);break;
- default:die($formatMsg)
- }
- }//배경 이미지 읽기
- if(!emptyempty( $groundImage) && file_exists($groundImage))
- {
- $ground_info = getimagesize($groundImage)
- $ground_w = $ground_info[0];// 배경 이미지
- $ground_h = $ground_info[1];//배경 이미지 높이 가져오기
- switch($ground_info[2])//배경 이미지 형식 가져오기
- {
- 사례 1:$ground_im = imagecreatefromgif($groundImage) ;break;
- 사례 2:$ground_im = imagecreatefromjpeg($groundImage);break
- 사례 3:$ground_im = imagecreatefrompng($groundImage);break; >default:die($formatMsg);
- }
- }
- else
- {
- die("워터마킹해야 할 사진이 존재하지 않습니다! ”);
- //워터마크 위치
- if($isWaterImage)//사진 워터마크
- {
- $w = $water_w
- $h = $water_h; >$label = "이미지"
- }
- else//텍스트 워터마크
- {
- $temp = imagettfbbox(ceil($textFont*5),0,"./cour.ttf" , $waterText);//트루타입 글꼴을 사용하여 텍스트 범위 가져오기
- $w = $temp[2] - $temp[6]
- $h = $temp[3] - $temp[7] ;
- unset($temp);
- $label = "텍스트 영역"
- }
- if( ($ground_w<$w) || ($ground_h<$h) )
- {
- echo "워터마크를 적용해야 하는 이미지의 길이나 폭이 ".$label." 워터마크보다 작아서 워터마크를 생성할 수 없습니다! ”;
- return;
- }
- switch($waterPos)
- {
- case 0://random
- $posX = rand(0,($ground_w - $w)) ;
- $posY = rand(0,($ground_h - $h));
- break
- 왼쪽 상단은 1://1입니다
- $posY; = 0;
- break;
- case 2://2는 상단 중앙에 있습니다.
- $posX = ($ground_w - $w) / 2
- $posY = 0;
- 케이스 3://3이 오른쪽 상단
- $posX = $ground_w - $w;
- $posY = 0
- break
- 가운데; left
- $posX = 0;
- $posY = ($ground_h - $h) / 2
- break
- case 5://5가 중앙에 위치함
- $posX = ($ground_w - $w) / 2;
- $posY = ($ground_h - $h) / 2
- break
- case 6://6은 오른쪽 중간
- $posX = $ ground_w - $ w;
- $posY = ($ground_h - $h) / 2;
- break
- case 7://7은 왼쪽 하단
- $posX = 0; posY = $ground_h - $h;
- break;
- case 8://8은 하단 중앙에 위치합니다.
- $posX = ($ground_w - $w) / 2; $ h;
- break;
- case 9://9는 오른쪽 하단
- $ground_w - $w
- $posY = $ground_h -
- break; 🎜>default://random
- $posX = rand(0,($ground_w - $w))
- $posY = rand(0,($ground_h - $h))
- break ;
- }
- //이미지의 색상 혼합 모드 설정
- imagealphablending($ground_im, true)
- if($isWaterImage)//이미지 워터마크
- {
- imagecopy($ ground_im , $water_im, $posX, $posY, 0, 0, $water_w,$water_h);//워터마크를 대상 파일에 복사
- }
- else//텍스트 워터마크
- {
- if( !emptyempty($textColor) && (strlen($textColor)==7) )
- {
- $R = hexdec(substr($textColor,1,2))
- $G = hexdec(substr ( $textColor,3,2));
- $B = hexdec(substr($textColor,5));
- }
- else
- {
- die("워터마크 텍스트 색상 형식 정확하지 않습니다!");
- }
- imagestring( $ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B));
- }
- //生成水印后의 사진
- @unlink($groundImage);
- switch($ground_info[2])//取得背景图文字格式
- {
- case 1:imagegif($ground_im,$groundImage);break;
- 사례 2:imagejpeg($ground_im,$groundImage);break;
- 사례 3:imagepng($ground_im,$groundImage);break;
- 기본값:die($errorMsg);
- }
- //释放内存
- if(isset($water_info)) unset($water_info);
- if(isset($water_im)) imagedestroy($water_im);
- 설정 해제($ground_info);
- imagedestroy($ground_im);
- }
- //————————————————————————————
- $id=$_REQUEST['id' ];
- $num = count($_FILES['userfile']['name']);
- print_r($_FILES['userfile']);
- print_r($_FILES['사용자 파일']['이름']);
- 에코 $num;
- 에코 “
”;
- if(isset($id)){
- for($i=0;$i<$id;$i ){
- if(isset($_FILES) && !emptyempty($_FILES[' userfile']) && $_FILES['userfile']['size']>0)
- {
- $uploadfile = “./”.time().”_”.$_FILES['userfile' ][이름][$i];
- 에코 “
”;
- echo $uploadfile;
- if (copy($_FILES['userfile']['tmp_name'][$i], $uploadfile))
- {
- echo “확인
”; $waterImage=”logo_ok1.gif”;//WaterMark($uploadfile,9,$waterImage)
- echo “";
- }
- else
- {
- echo “실패
”;
- }
- }
- }
- }
- ?>
-
- for($a=0;$a<$id;$a ){
- echo “文件: <입력 이름=”userfile[]” type=”file”> ;
”;
- }
- ?>
- <입력 유형=”제출” 값=”上传”>
-
-
- 复代码
-
-
코드 4
중국어 워터마크 추가
-
- /*-----
- **설명: 지정된 이미지에 하단 워터마크를 추가하는 데 사용됩니다( 이미지 표시 영역을 차지하지 않음) 개체를 생성하고
- 을 호출해야 합니다.
- **생성일: 2007-10-09
- **업데이트일: 2007-10-09
- **참고: 1. 필수 gd 라이브러리 지원, iconv 지원 필요(php5에 이미 포함되어 있어 로드할 필요 없음)
- 2. jpg/jpeg/gif/png 세 가지 유형의 이미지에만 적합하며 다른 유형은 처리되지 않습니다.
- 3. 이미지가 있는 디렉터리의 속성은 쓰기 가능해야 합니다.
- 4. 호출 예:
- $objImg = new MyWaterDownChina()
- $objImg->Path = "images/ ";
- $objImg->FileName = "1.jpg";
- $objImg->Text = "HAHAKONGJIANHTTP://HI.BAIDU.COM/LYSONCN";
- $objImg-> Font = "./font/simhei.ttf";
- $objImg-> ;Run()
- **멤버 함수:
- ---------------* /
- class MyWaterDownChina{
- var $Path = "./"; //이 클래스를 호출하는 페이지를 기준으로 그림이 있는 디렉터리의 상대 경로
- var $FileName = ""; //그림 이름(예: "1.jpg")
- var $Text = ""; //Picture 추가할 워터마크 텍스트는 중국어를 지원합니다.
- var $TextColor = "#ffffff" // 텍스트 색상, gif 사진의 경우 글꼴 색상은 검정색만 가능합니다.
- var $TextBgColor = "#000000" / /텍스트 배경 표시줄 색상
- var $Font = "c:// windows//fonts//simhei.ttf"; //글꼴 저장 디렉터리, 상대 경로
- var $OverFlag = true; // 원본 이미지를 덮어쓸지 여부, 기본값은 덮어쓰기입니다. 덮어쓰지 않을 경우 "_water_down "는 원본 이미지 파일 이름 뒤에 자동으로 추가됩니다. 예: "1.jpg" => "1_water_down.jpg" var $BaseWidth = 200; //그림 워터마크 앞의 너비는 최소한 >=200이어야 합니다. 텍스트가 추가됩니다.
- //-------------
- //함수: 클래스 생성자(php5.0 이상)
- //매개변수: 없음
- / /반환: 없음
- function __construct(){;}
- //------------
- //함수: 클래스 소멸자(양식 php5.0 이상)
- //매개변수: 없음
- //반환: 없음
- 함수 __destruct(){;}
- //------ -------- --------
- //함수: 객체에 함수를 실행하고 이미지에 워터마크를 추가합니다
- //매개변수: 없음
- //반환: 없음
- function Run()
- {
- if($this->FileName == "" || $this->Text == "")
- return
- //GD 라이브러리 설치 여부 확인
- if(false == function_exists("gd_info"))
- {
- echo "GD 라이브러리가 시스템에 설치되어 있지 않아 이미지에 워터마크를 추가할 수 없습니다."
- return; >}
- //입력 및 출력 이미지 경로 이름 설정
- $arr_in_name =explore(".",$this->FileName)
- //
- $inImg = $this-> ;Path.$ this->FileName
- $outImg = $inImg;
- $tmpImg = $this->Path.$arr_in_name[0]."_tmp.".$arr_in_name[1]; /일시적으로 처리된 사진, 매우 중요
- if(!$this->OverFlag)
- $outImg = $this->Path.$arr_in_name[0]."_water_down.".$arr_in_name[1];
- //이미지 존재 여부 확인
- if(!file_exists($inImg))
- return
- //이미지 속성 가져오기
- $groundImageType = @getimagesize($inImg) ;
- $imgWidth = $groundImageType[0];
- $imgHeight = $groundImageType[1]
- $imgType = $groundImageType[2]
- if($imgWidth < $this-> ;BaseWidth) //기본 너비 미만, 처리되지 않음
- return
- //사진이 jpg/jpeg/gif/png가 아닌 경우 처리되지 않음
- switch($imgType)
- {
- 사례 1:
- $ image = imagecreatefromgif($inImg);
- $this->TextBgColor = "#ffffff"; //gif 이미지의 글꼴은 검정색만 가능하므로 배경색은 흰색으로 설정
- break;
- 사례 2:
- $image = imagecreatefromjpeg($inImg);
- break;
- 사례 3:
- $image = imagecreatefrompng($inImg); 🎜>break;
- 기본값:
- return
- break
- }
- //색상 생성
- $color = @imagecolorallocate($image,hexdec(substr($this->) ;TextColor,1,2)),hexdec(substr( $this->TextColor,3,2)),hexdec(substr($this->TextColor,5,2))) //텍스트 색상
- //높이가 다음인 빈 이미지 생성
- $newHeight = $imgHeight 20;
- $objTmpImg = @imagecreatetruecolor($imgWidth,$newHeight)
- $colorBg = @imagecolorallocate($objTmpImg,hexdec(substr($this->TextBgColor,1,2)),hexdec(substr($this->TextBgColor,3,2)),hexdec(substr($this->TextBgColor ,5,2))); //배경색
- //이미지의 배경색 채우기
- @imagefill ($objTmpImg,0,0,$colorBg)//원본 이미지 복사 임시 이미지로
- @imagecopy($objTmpImg,$image, 0,0,0,0,$imgWidth,$imgHeight)
- //작성할 워터마크 텍스트 개체 생성
- $objText = $this->createText($this->Text);//작성할 워터마크 텍스트의 위치 계산
- $x = 5
- $y = $newHeight-5; 🎜>//텍스트 워터마크 쓰기
- @imagettftext($objTmpImg, 10,0,$x,$y,$color,$this->Font,$objText)
- //새 사진 생성, 임시 사진
- switch($imgType)
- {
- 사례 1:
- imagegif($objTmpImg,$tmpImg)
- break;
- 사례 2:
- imagejpeg($objTmpImg ,$tmpImg);
- break;
- imagepng($objTmpImg,$tmpImg);
- default:
- return; >}
- //리소스 해제
- @imagedestroy($ objTmpImg)
- @imagedestroy($image)
- //파일 이름 바꾸기
- if($this->OverFlag)
- {
- //원본 이미지 덮어쓰기
- @unlink ($inImg)
- @rename($tmpImg,$outImg)
- else
- {
- //원본 이미지를 덮어쓰지 마세요
- @rename($tmpImg,$outImg )
- }
- }
- //---------
- //Function : 워터마크 텍스트 객체 생성
- //매개변수: 없음
- //Return : 워터마크 텍스트 객체 생성
- function createText($instring)
- {
- $outstring=""
- $ max=strlen($instring);
- for($i=0; $i<$max;$i )
- {
- $h=ord($instring[$i])
- if($h>=160 && $i<$max-1)
- {
- $outstring .= "".base_convert(bin2hex(iconv("gb2312","ucs-2",substr( $instring,$i,2)),16,10)."; "
- $i ;
- }
- else
- {
- $outstring .= $instring[$i ];
- }
- }
- return $outstring;
- }
- }//class
- ?>
-
-
- 코드 복사
-
-
-
-
-
-
-
|