导读: /**功能:PHP图片水印(水印支持图片或文字)*参数:*$groundImage背景图片,即需要加水印的图片,暂只支持GIF,JPG,PNG格式;*$waterPos水印......
php给图片加水印与上传图片加水印php类
function 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];
$ground_h = $ground_info [1];
switch ( $ground_info [2])
{
case 1: $ground_im = imagecreatefromgif( $groundImage ); break ;
case 2: $ground_im = imagecreatefromjpeg( $groundImage ); break ;
case 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:
$posX = rand(0,( $ground_w - $w ));
$posY = rand(0,( $ground_h - $h ));
break ;
case 1:
$posX = 0;
$posY = 0;
break ;
case 2:
$posX = ( $ground_w - $w ) / 2;
$posY = 0;
break ;
case 3:
$posX = $ground_w - $w ;
$posY = 0;
break ;
case 4:
$posX = 0;
$posY = ( $ground_h - $h ) / 2;
break ;
case 5:
$posX = ( $ground_w - $w ) / 2;
$posY = ( $ground_h - $h ) / 2;
break ;
case 6:
$posX = $ground_w - $w ;
$posY = ( $ground_h - $h ) / 2;
break ;
case 7:
$posX = 0;
$posY = $ground_h - $h ;
break ;
case 8:
$posX = ( $ground_w - $w ) / 2;
$posY = $ground_h - $h ;
break ;
case 9:
$posX = $ground_w - $w ;
$posY = $ground_h - $h ;
break ;
default :
$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 ;
case 2:imagejpeg( $ground_im , $groundImage ); break ;
case 3:imagepng( $ground_im , $groundImage ); break ;
default : die ( $errorMsg );
}
if (isset( $water_info )) unset( $water_info );
if (isset( $water_im )) imagedestroy( $water_im );
unset($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 )){
for ( $i =0; $i < $id ; $i ++){
if (isset( $_FILES ) && !emptyempty( $_FILES [ 'userfile' ]) && $_FILES [ 'userfile' ][ 'size' ]>0)
{
$uploadfile = “./”.time().”_”. $_FILES [ 'userfile' ][name][ $i ];
echo “ ”;
echo $uploadfile ;
if ( copy ( $_FILES [ 'userfile' ][ 'tmp_name' ][ $i ], $uploadfile ))
{
echo “OK ”;
$waterImage =”logo_ok1.gif”;
imageWaterMark($uploadfile ,9, $waterImage );
echo “$uploadfile .”” border=”0”>”;
}
else
{
echo “Fail ”;
}
}
}
}
?>
for ( $a =0; $a < $id ; $a ++){
echo “文件: ”;
}
?>
?>
参数说明:
$max_file_size : 上传文件大小限制, 单位BYTE
$destination_folder : 上传文件路径
$watermark : 是否附加水印(1为加水印,其他为不加水印);
使用说明:
1. 将PHP.INI文件里面的"extension=php_gd2.dll" 一行前面的;号去掉,因为我们要用到GD库;
2. 将extension_dir =改为你的php_gd2.dll所在目录;
3. http:
****************************************************/
$uptypes = array (
'image/jpg' ,
'image/jpeg' ,
'image/png' ,
'image/pjpeg' ,
'image/gif' ,
'image/bmp' ,
'image/x-png'
);
$max_file_size =2000000;
$destination_folder = "uploadimg/" ;
$watermark =1;
$watertype =1;
$waterposition =1;
$waterstring = "http://www.xplore.cn/" ; //水印字符串
$waterimg = "xplore.gif" ;
$imgpreview =1;
$imgpreviewsize =1/2;
?>
ZwelL图片上传程序
method= "post" name= "upform" >
上传文件:
"upfile" type= "file" >
"submit" value= "上传" >
允许上传的文件类型为:=implode(', ' , $uptypes )?>
if ( $_SERVER [ 'REQUEST_METHOD' ] == 'POST' )
{
if (! is_uploaded_file ( $_FILES [ "upfile" ][tmp_name]))
{
echo "图片不存在www.111cn.net!" ;
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 " 已经成功上传 文件名: " . $destination_folder . $fname . " " ;
echo " 宽度:" . $image_size [0];
echo " 长度:" . $image_size [1];
echo " 大小:" . $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])
{
case 1:
$simage =imagecreatefromgif( $destination );
break ;
case 2:
$simage =imagecreatefromjpeg( $destination );
break ;
case 3:
$simage =imagecreatefrompng( $destination );
break ;
case 6:
$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 )
{
case 1:
imagestring($nimage ,2,3, $image_size [1]-15, $waterstring , $black );
break ;
case 2:
$simage1 =imagecreatefromgif( "xplore.gif" );
imagecopy($nimage , $simage1 ,0,0,0,0,85,15);
imagedestroy($simage1 );
break ;
}
switch ( $iinfo [2])
{
case 1:
imagejpeg($nimage , $destination );
break ;
case 2:
imagejpeg($nimage , $destination );
break ;
case 3:
imagepng($nimage , $destination );
break ;
case 6:
imagewbmp($nimage , $destination );
break ;
}
imagedestroy($nimage );
imagedestroy($simage );
}
if ( $imgpreview ==1)
{
echo " 图片预览: " ;
echo "".$destination." " width=" .( $image_size [0]* $imgpreviewsize ). " height=" .( $image_size [1]* $imgpreviewsize );
echo " alt=" 图片预览: 文件名: ".$destination." www.111cn.net上传时间: ">" ;
}
}