PHP经典的给图片加水印程序
2018-09-07 14:55
  <?php 
/************************************************************** 
参数说明: 
$max_file_size:上传文件大小限制,单位BYTE 
$destination_folder:上传文件路径 
$watermark:是否附加水印(1为加水印,其他为不加水印); 
使用说明: 
1.将文件里面的extension=php_gd2.dll一行前面的;号去掉,因为我们要用到GD库; 
2.将extension_dir=改为你的php_gd2.dll所在目录; 
**************************************************************/ 
//上传文件类型列表 
$uptypes=array( 
image/jpg, 
image/jpeg, 
image/png, 
image/pjpeg, 
image/gif, 
image/bmp, 
image/x-png 
); 
$max_file_size=2000000;//上传文件大小限制,单位BYTE 
$destination_folder=uploadimg/;//上传文件路径 
$watermark=1;//是否附加水印(1为加水印,其他为不加水印); 
$watertype=1;//水印类型(1为文字,2为图片) 
$waterposition=1;//水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中); 
$waterstring=水印字符串 
$waterimg=xplore.gif;//水印图片 
$imgpreview=1;//是否生成预览图(1为生成,其他为不生成); 
$imgpreviewsize=1/1;//缩略图比例 
?> 
<html> 
<head> 
<title>图片打水印程序演示!
<styletype=text/css> 
<!-- 
body 
{ 
font-size:9pt; 
} 
input 
{ 
background-color:#66CCFF; 
border:1pxinset#CCCCCC; 
} 
--> 
</style> 
</head> 
<body> 
<center> 
<formenctype=multipart/form-datamethod=postname=upform> 
上传文件: 
<inputname=upfiletype=file> 
<inputtype=submitvalue=上传><P> 
允许上传的文件类型为:<?=implode(,,$uptypes)?> 
</form> 
<FONTCOLOR=#FF0000>本演示空间由TuWoo提供,本程序采用文字水印的方式.</FONT></CENTER> 
<?php 
if($_SERVER[REQUEST_METHOD]==POST) 
{ 
if(!is_uploaded_file($_FILES[upfile][tmp_name])) 
//是否存在文件 
{ 
echo图片不存在!; 
exit; 
} 
$file=$_FILES[upfile]; 
if($max_file_size<$file[size]) 
//检查文件大小 
{ 
echo文件太大!; 
exit; 
} 
if(!in_array($file[type],$uptypes)) 
//检查文件类型 
{ 
echo文件类型不符!.$file[type]; 
exit; 
} 
if(!file_exists($destination_folder)) 
{ 
mkdir($destination_folder); 
} 
$filename=$file[tmp_name]; 
$image_size=getimagesize($filename); 
$pinfo=pathinfo($file[name]); 
$ftype=$pinfo[extension]; 
$destination=$destination_folder.time()...$ftype; 
if(file_exists($destination)&&$overwrite!=true) 
{ 
echo同名文件已经存在了; 
exit; 
} 
if(!move_uploaded_file($filename,$destination)) 
{ 
echo移动文件出错; 
exit; 
} 
$pinfo=pathinfo($destination); 
$fname=$pinfo[basename]; 
echo<fontcolor=red>已经成功上传</font><br>文件名:<fontcolor=blue>.$destination_folder.$fname.</font><br>; 
echo宽度:.$image_size[0]; 
echo长度:.$image_size[1]; 
echo<br>大小:.$file[size].bytes; 
if($watermark==1) 
{ 
$iinfo=getimagesize($destination,$iinfo); 
$nimage=imagecreatetruecolor($image_size[0],$image_size[1]); 
$white=imagecolorallocate($nimage,255,255,255); 
$black=imagecolorallocate($nimage,0,0,0); 
$red=imagecolorallocate($nimage,255,0,0); 
imagefill($nimage,0,0,$white); 
switch($iinfo[2]) 
{ 
case1: 
$simage=imagecreatefromgif($destination); 
break; 
case2: 
$simage=imagecreatefromjpeg($destination); 
break; 
case3: 
$simage=imagecreatefrompng($destination); 
break; 
case6: 
$simage=imagecreatefromwbmp($destination); 
break; 
default: 
die(不支持的文件类型); 
exit; 
} 
imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]); 
imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white); 
switch($watertype) 
{ 
case1://加水印字符串 
imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black); 
break; 
case2://加水印图片 
$simage1=imagecreatefromgif(xplore.gif); 
imagecopy($nimage,$simage1,0,0,0,0,85,15); 
imagedestroy($simage1); 
break; 
} 
switch($iinfo[2]) 
{ 
case1: 
//imagegif($nimage,$destination); 
imagejpeg($nimage,$destination); 
break; 
case2: 
imagejpeg($nimage,$destination); 
break; 
case3: 
imagepng($nimage,$destination); 
break; 
case6: 
imagewbmp($nimage,$destination); 
//imagejpeg($nimage,$destination); 
break; 
} 
//覆盖原上传文件 
imagedestroy($nimage); 
imagedestroy($simage); 
} 
if($imgpreview==1) 
{ 
echo<br>图片预览:<br>; 
echo<imgsrc=.$destination.width=.($image_size[0]*$imgpreviewsize).height=.($image_size[1]*$imgpreviewsize); 
echoalt=图片预览:r文件名:.$destination.r上传时间:>; 
} 
} 
?> 
</body> 
</html>
上一篇:MYSQL数据库初学者使用指南