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 }