php给一张图片加上水印效果

 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 }
原文地址:https://www.cnblogs.com/inc-is-include/p/5086490.html