本文实现的功能特别适用于一些商城和图片站中,分享了图片在上传时添加文字和图片水印的技巧,供大家参考,具体内容如下
1. water.class.php
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
<?php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ //给图片添加水印 Class Water{ //开启水印 private $watermark_on = '1' ; public $water_img ; //水印位置 public $pos = 1; //压缩比 public $pct = 80; //透明度 public $quality = 80; public $text = '乐趣网zlblog.sinaapp.com' ; public $size = 12; public $color = '#000000' ; public $font = 'font.ttf' ; if (! $this ->check( $img ) || ! $this ->watermark_on) return false; $water_img = $water_img ? $water_img : $this ->water_img; //水印的开启状态 $waterimg_on = $this ->check( $water_img ) ? 1 : 0; //判断是否在原图上操作 $out_img = $out_img ? $out_img : $img ; //判断水印的位置 $pos = $pos ? $pos : $this ->pos; //水印文字 $text = $text ? $text : $this ->text; $img_info = getimagesize ( $img ); $img_w = $img_info [0]; $img_h = $img_info [1]; //判断水印图片的类型 if ( $waterimg_on ){ $w_info = getimagesize ( $water_img ); $w_w = $w_info [0]; $w_h = $w_info [1]; if ( $img_w < $w_w || $img_h < $w_h ) return false; switch ( $w_info [2] ){ case 1: $w_img = imagecreatefromgif( $water_img ); break ; case 2: $w_img = imagecreatefromjpeg( $water_img ); break ; case 3: $w_img = imagecreatefrompng( $water_img ); break ; } } else { if ( empty ( $text ) || strlen ( $this ->color)!=7 ) return FALSE; $text_info = imagettfbbox( $this ->size, 0, $this ->font, $text ); $w_w = $text_info [2] - $text_info [6]; $w_h = $text_info [3] - $text_info [7]; } //建立原图资源 switch ( $img_info [2] ){ case 1: $res_img = imagecreatefromgif( $img ); break ; case 2: $res_img = imagecreatefromjpeg( $img ); break ; case 3: $res_img = imagecreatefrompng( $img ); break ; } //确定水印的位置 switch ( $pos ){ case 1: $x = $y =25; break ; case 2: $x = ( $img_w - $w_w )/2; $y = 25; break ; case 3: $x = $img_w - $w_w ; $y = 25; break ; case 4: $x = 25; $y = ( $img_h - $w_h )/2; break ; case 5: $x = ( $img_w - $w_w )/2; $y = ( $img_h - $w_h )/2; break ; case 6: $x = $img_w - $w_w ; $y = ( $img_h - $w_h )/2; break ; case 7: $x = 25; $y = $img_h - $w_h ; break ; case 8: $x = ( $img_w - $w_w )/2; $y = $img_h - $w_h ; break ; case 9: $x = $img_w - $w_w ; $y = $img_h - $w_h ; break ; default : $x = mt_rand(25, $img_w - $w_w ); $y = mt_rand(25, $img_h - $w_h ); } //写入图片资源 if ( $waterimg_on ){ imagecopymerge( $res_img , $w_img , $x , $y , 0, 0, $w_w , $w_h , $this ->pct); } else { $r = hexdec( substr ( $this ->color, 1,2)); $g = hexdec( substr ( $this ->color, 3,2)); $b = hexdec( substr ( $this ->color, 5,2)); $color = imagecolorallocate( $res_img , $r , $g , $b ); imagettftext( $res_img , $this ->size, 0, $x , $y , $color , $this ->font, $text ); } //生成图片类型 switch ( $img_info [2] ){ case 1: imagecreatefromgif( $res_img , $out_img ); break ; case 2: //imagecreatefromjpeg($res_img,$out_img); imagejpeg( $res_img , $out_img ); break ; case 3: imagejpeg( $res_img , $out_img ); break ; } if (isset( $res_img )) imagedestroy ( $res_img ); if (isset( $w_img )) imagedestroy( $w_img ); return TRUE; } //验证图片是否存在 private function check( $img ){ $type = array ( '.jpg' , '.jpeg' , '.png' , '.gif' ); $img_type = strtolower ( strrchr ( $img , '.' )); } } |
2. test1.php
1
2
3
4
5
6
7
8
9
10
11
12
|
<?php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ //header('Content-Type:text/html;charset=utf-8'); $image = new Water(); $image ->watermark( '12.jpg' ,5); //$image->watermark('12.jpg',1); |
© 版权声明
本文刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等部门来源于互联网,版权均归原作者所有!本网站提供的内容服务于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
联系信息:邮箱aoxolcom@163.com或见网站底部。
联系信息:邮箱aoxolcom@163.com或见网站底部。
THE END
请登录后发表评论
注册
社交帐号登录