>백엔드 개발 >PHP 튜토리얼 >코드 공유를 실현하기 위해 PHP 이미지에 중국어 워터마크 추가

코드 공유를 실현하기 위해 PHP 이미지에 중국어 워터마크 추가

高洛峰
高洛峰원래의
2016-12-01 11:53:271133검색

예시 1
코드 복사 코드는 다음과 같습니다.
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(기울임꼴), SIMFANG .TTF(송 왕조 모방), SIMSUN.TTC(송 왕조 및 신송 왕조) 및 GD에서 지원하는 기타 중국어 글꼴*/
$str = iconv('GB2312',' UTF-8','중국어 워터마크'); /*gb2312 문자 세트를 UTF-8 문자로 변환합니다*/
ImageTTFText($im, 30, 0, 100, 200, $pink, $fontfile, $str) ;
/* 중국어 워터마크 추가*/
ImageDestroy($im)
?>

코드 복사 다음과 같습니다:
/ /********************************** ****** //
// 기능: 이미지에 텍스트 추가
// 매개 변수: $img 이미지 파일 이름
// $new_img 이미지 파일 이름을 저장합니다. 비어 있으면 저장하지 않음을 의미합니다. 이미지 저장
// $text 문자열 내용
// 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, stringfontfile, string text):
//이 함수는 이미지에 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 이미지 워터마크 (워터마크는 이미지 또는 텍스트를 지원합니다.)
* 매개변수:
* $groundImage 배경 이미지, 즉 워터마크가 필요한 이미지는 현재 GIF만 지원합니다. , JPG, PNG 형식;
* $waterPos 워터마크 위치, 10가지 상태가 있으며 0은 임의의 위치입니다.
* 1은 왼쪽 상단, 2는 상단 중앙, 3은 오른쪽 상단입니다. 중앙 왼쪽, 5 중앙 중앙, 6 중앙 오른쪽
* 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 = TRUE; $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;
case 3:$water_im = imagecreatefrompng($waterImage);break
default:die($formatMsg)
}
}
//배경 이미지 읽기
if(!emptyempty($groundImage) && file_exists($groundImage))
{
$ground_info = getimagesize($groundImage)
$ground_w = $ground_info[0];//배경 가져오기 image Width
$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 = "picture";
}
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;
case 3://3은 오른쪽 상단을 의미합니다.
$posY = 0
break
case 4://4는 가운데 왼쪽을 의미합니다. 🎜>$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
왼쪽 하단
$posX = 0; $posY = $ground_h - $h;
break;
case 8://8은 하단 중앙에 위치합니다.
$posX = ($ground_w - $w) / 2; - $ h;
case 9://9는 오른쪽 하단
$ground_w - $w
$posY = $ground_h - $h;
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
default: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['userfile']['name']);
echo $num
echo “

if(isset($id))
($i=0;$i<$id;$i++){
if(isset($_FILES) && !emptyempty($_FILES['userfile']) && $_FILES['userfile']['size']>0) 

$uploadfile = “./” .time().”_”.$_FILES['사용자 파일'][이름][$i]; 
에코 “
”; 
echo $uploadfile; 
if (copy($_FILES['userfile']['tmp_name'][$i], $uploadfile)) 

echo “확인
”; 
//文字水印
//imageWaterMark($uploadfile,5,”",”HTTP://www.lvye.info”,5,”#cccccc“); 🎜>$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、只适合三种类型的图pictures,jpg/jpeg/gif/png,其它类型不处理 
3、注意图文所在目录的属性必须可写 
4、调用范例: 
$objImg = new MyWaterDownChina(); 
$objImg->경로 = "이미지/"; 
$objImg->FileName = "1.jpg"; 
$objImg->Text = "하하콩지안[url]HTTP://HI.BAIDU.COM/LYSONCN[/url]"; 
$objImg->Font = "./font/simhei.ttf"; 
$objImg->실행(); 
**成员函数: 
---------------------------- ------------*/ 
class MyWaterDownChina{ 
var $Path = "./"; //이미지를 사용하여 사진을 찍을 수 있습니다.
var $FileName = ""; //그림 이름, 如“1.jpg” 
var $Text = ""; //그림이 있는 물印文字 ,支持中文 
var $TextColor = "#ffffff"; //문자형 색상,gif图 Pictures 时,字体颜color只能为黑color 
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(){ ;} 
//------------------------------- ---------- 
//---------------------- -------------- 
//功能:对象运行函数,给图文加上水印 
//参数:无 
//返回:无 
함수 Run() 

if($this->FileName == "" || $this->Text == "") 
return; 
//检测是否安装GD库 
if(false == function_exists("gd_info")) 

echo "系统没有安装GD库,不能给图文加水印."; 
반환; 

//设置输入、输流图文路径name 
$arr_in_name =explod(".",$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 ; 
//이미지 속성 가져오기
$groundImagesize($inImg);
$imgWidth = $groundImageType[0]
$imgHeight =
$imgType = $ groundImageType[2]
if($imgWidth < $this->BaseWidth) //기본 너비보다 작으면 처리되지 않습니다.
return
//When; 사진이 jpg/jpeg/gif/png가 아니며 처리되지 않음
switch($imgType)
{
case 1:
$image = imagecreatefromgif($inImg)
$this- >TextBgColor = "#ffffff"; //gif 이미지 글꼴은 검정색만 가능하므로 배경색은 흰색으로 설정합니다.
break
case 2:
$image = imagecreatefromjpeg($inImg) ;
break;
사례 3:
$image = imagecreatefrompng($inImg)
break;
기본값:
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);
break;
return;
break;
}
//리소스 해제
@imagedestroy ($image);//파일 이름 바꾸기
if ($this->OverFlag)
{
//원본 이미지 덮어쓰기
@unlink($inImg); @rename($tmpImg,$outImg);
}
else
{
//원본 이미지를 덮어쓰지 마세요
@rename($tmpImg,$outImg)
}
}
//--------- ---------------
/ /함수: 워터마크 텍스트 객체 생성
//매개변수: 없음
//반환: 워터마크 텍스트 객체 생성
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[ $i];
}
$ outstring 반환
}
}//class
?>

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.