封裝了一個類,可生成驗證碼,縮略圖,及水印圖,分享給大家
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
<?php class image{ session_start(); //驗證碼類 static public function verify( $code , $width =75, $height =25, $n =4){ header( "content-type:image/png" ); // 創建畫布 $img =imagecreatetruecolor( $width , $height ); // 設置背景色 $bgcolor =imagecolorallocate( $img ,mt_rand(200,255),mt_rand(200,255),rand(200,255)); // 將背景色填充 imagefill( $img ,0,0, $bgcolor ); // 繪制五條弧線 for ( $i =0; $i <5; $i ++){ $arccolor =imagecolorallocate( $img ,mt_rand(200,255),mt_rand(200,255),rand(200,255)); imagearc( $img ,mt_rand(5,( $width -5)),mt_rand(5,( $height -5)),mt_rand(5,( $width -5)),mt_rand(5,( $height -5)),mt_rand(0,360),mt_rand(0,360), $arccolor ); } // 繪制一百個點 for ( $i =0; $i <100; $i ++){ $pixelcolor =imagecolorallocate( $img ,mt_rand(200,255),mt_rand(200,255),rand(200,255)); imagesetpixel( $img ,mt_rand(1,( $width -1)),mt_rand(1,( $height -1)), $pixelcolor ); } // 繪制五條線段 for ( $i =0; $i <5; $i ++){ $linecolor =imagecolorallocate( $img ,mt_rand(200,255),mt_rand(200,255),rand(200,255)); imageline( $img ,mt_rand(1,( $width -1)),mt_rand(1,( $height -1)),mt_rand(1,( $width -1)),mt_rand(1,( $height -1)), $linecolor ); } // 設置邊框顏色 $bdcolor =imagecolorallocate( $img ,mt_rand(150,200),mt_rand(150,200),rand(150,200)); // 繪制一個矩形無填充邊框 imagerectangle( $img ,0,0,( $width -1),( $height -1), $bdcolor ); // 設置驗證碼字符串 $str = '' ; for ( $i =1; $i <= $n ; $i ++){ $str .= substr ( str_shuffle ( $code ),0,1); } $_SESSION [ 'a' ]= $str ; // for ( $i =0; $i < $n ; $i ++){ $textcolor =imagecolorallocate( $img ,mt_rand(100,150),mt_rand(100,150),mt_rand(100,150)); imagettftext( $img ,1/( $n +1)* $width ,mt_rand(-20,20),((1- $n /(5+ $n ))* $width /( $n -1)+ $i *1/( $n +1)* $width ),1/2*( $height +3/5* $height ), $textcolor , '1.ttf' , substr ( $str , $i ,1)); } // 打印圖像 imagepng( $img ); // 釋放資源 imagedestroy( $img ); return $str ; } //縮略圖類 /* *$source需要縮略的圖片 */ static public function thumbnail( $source , $deletesource =false, $width =180){ $info = getimagesize ( $source ); //getimagesize方法獲得圖像的詳細信息 $createFun = str_replace ( '/' , 'createfrom' , $info [ 'mime' ]); //將getimagesize中的['mime']中的/替換,變為imagecreatefromjpeg方法 $src = $createFun ( $source ); //創建圖像 $dst_w = $width ; //縮略圖的寬 $dst_h = $width / $info [0]* $info [1]; //計算縮略圖的高 $dst =imagecreatetruecolor( $dst_w , $dst_h ); //新建一個真彩色圖像 imagecopyresampled( $dst , $src ,0,0,0,0, $dst_w , $dst_h , $info [ '0' ], $info [ '1' ]); //重采樣拷貝部分圖像并調整大小 $saveFun = str_replace ( '/' , '' , $info [ 'mime' ]); //設置保存函數 $ext = strrchr ( $source , '.' ); //strrchr查找指定字符在字符串中的最后一次出現,返回包括其自身在內的剩余的字符串 $thumbnailName = str_replace ( $ext , '' , $source ). '_thumbnail' . $ext ; //設置保存路徑 if (! $deletesource ){ $saveFun ( $dst , $thumbnailName ); //保存圖像 } else { $saveFun ( $dst , $thumbnailName ); unlink( $source ); //刪除原圖 } imagedestroy( $src ); //銷毀資源 imagedestroy( $dst ); //銷毀資源 return $thumbnailName ; } //水印圖類 /* *$srcing水印圖 *$dsting原圖 */ static public function watermark( $dstimg , $srcimg ){ $dstinfo = getimagesize ( $dstimg ); //getimagesize方法獲取該圖片的詳細信息(該方法返回的是一個詳細的數組) $srcinfo = getimagesize ( $srcimg ); $createdst = str_replace ( '/' , 'createfrom' , $dstinfo [ 'mime' ]); //將getimagesize方法返回的數組中的mime值中的/替換,結果為imagecreatefromjpeg $createsrc = str_replace ( '/' , 'createfrom' , $srcinfo [ 'mime' ]); $dst = $createdst ( $dstimg ); //替換后為imagecreatefromjpeg函數,創建一個圖像 $dst_w =imagesx( $dst ); //獲取大圖的寬 $dst_h =imagesy( $dst ); //獲取大圖的高 $src = $createsrc ( $srcimg ); //替換后為imagecreatefromjpeg函數,創建一個圖像 $src_w =imagesx( $src ); //獲取水印圖的寬 $src_h =imagesy( $src ); //獲取水印圖的高 $watermaker =imagecopy( $dst , $src ,( $dst_w - $src_w ),( $dst_h - $src_h ),0,0, $src_w , $src_h ); //將水印圖復制在大圖上 $saveFun = str_replace ( '/' , '' , $dstinfo [ 'mime' ]); //將getimagesize返回數組中的['mime']中的斜杠替換為空,替換后的值為imagejpeg,即為保存函數 $ext = strrchr ( $dstimg , '.' ); //strrchr查找指定字符在字符串中的最后一次出現,返回包括其自身在內的剩余的字符串 $watermaker = str_replace ( $ext , '' , $dstimg ). '_water' .time(). $ext ; //保存名 $saveFun ( $dst , $watermaker ); //保存圖片,第一個參數為要保存的圖片,第二個參數為保存路徑或保存名 imagedestroy( $dst ); //銷毀資源 imagedestroy( $src ); //銷毀資源 return $watermaker ; } } ?> |