1 <?php 2 /** 3 * 功能:给一张图片加上水印效果 4 * $i 要加水印效果的图片 5 * $t 水印文字 6 * $size 文字大小 7 * $pos 水印的位置 8 * $color 文字的颜色 9 * $flag 是布尔值,主要用来区分是不是原图上加水印 10 * $type 如果$flag等于false 则新图上加上水印 新文件名为 原名_txt.jpg 11 */ 12 function txt($i,$t='版权所有',$size=25,$pos=5,$color='rand',$flag=true,$type='_txt'){ 13 $img = imagecreatefromjpeg($i); 14 $w = imagesx($img); 15 $h = imagesy($img); 16 $font = dirname(__FILE__).'/font/ls.ttf'; 17 $ps = imagettfbbox($size,0,$font,$t); 18 $tw = $ps[4]; 19 $th = abs($ps[5]); 20 switch($pos){ 21 case 1:break; 22 case 2:break; 23 case 3:break; 24 case 4:break; 25 case 5:$x=($w-$tw)/2;$y=($h-$th)/2+$th;break; 26 case 6:break; 27 case 7:break; 28 case 8:break; 29 case 9:break; 30 default:break; 31 } 32 $c = getcolor($img,$color); 33 imagettftext($img,$size,0,$x,$y,$c,$font,$t); 34 if($flag){ 35 imagejpeg($img,$i); 36 }else{ 37 $ext = ext($i); 38 $ppp = rtrim($i,'.'.$ext); 39 $ppp = $ppp.$type.'.'.$ext; 40 imagejpeg($img,$ppp); 41 } 42 } 43 44 function getcolor($i,$c='rand',$a=50){ 45 $cc = ''; 46 switch($c){ 47 case 'white':$cc=imagecolorallocatealpha($i,255,255,255,$a);break; 48 case 'black':$cc=imagecolorallocatealpha($i,0,0,0,$a);break; 49 case 'red':$cc=imagecolorallocatealpha($i,255,0,0,$a);break; 50 case 'green':$cc=imagecolorallocatealpha($i,0,255,0,$a);break; 51 case 'blue':$cc=imagecolorallocatealpha($i,0,0,255,$a);break; 52 case 'orange':$cc=imagecolorallocatealpha($i,0xff,0x66,0x33,$a);break; 53 case 'yellow':$cc=imagecolorallocatealpha($i,255,255,0,$a);break; 54 case 'rand':$cc=imagecolorallocatealpha($i,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255),$a);break; 55 default: 56 $cs = substr($c,1); 57 $ok = str_split($cs,2); 58 $cc = imagecolorallocatealpha($i,hexdec($ok[0]),hexdec($ok[1]),hexdec($ok[2]),$a); 59 break; 60 } 61 return $cc; 62 } 63 64 65 /** 66 * 功能是:返回扩展名 67 */ 68 69 function ext($f){ 70 $exts = explode('.',$f); 71 return end($exts); 72 } 73 74 /** 75 * 功能是:返回文件名,不含扩展名 76 */ 77 function name($f){ 78 $s = explode('/',$f); 79 $fn = end($s); 80 return rtrim($fn,'.'.ext($f)); 81 }