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
|
<?php
/*PHP图片加文字水印类库
QQ:3697578482 伤心的歌
该类库暂时只支持文字水印,位置为右下角,颜色随机
调用方法:
1、在需要加水印的文件顶部引入类库:
include_once 'imageClass.php';
2、声明新类:
$tpl=new image_fu;
3、给图片水印提供参数:
$tpl->img(图片路径,水印文字,字体路径,字体大小,字体角度);
比如:$tpl->img('abc.jpg','这是水印文字','ziti.ttf',30,0)
*/
class
image_fu{
private
$image
;
private
$img_info
;
private
$img_width
;
private
$img_height
;
private
$img_im
;
private
$img_text
;
private
$img_ttf
=
''
;
private
$img_new
;
private
$img_text_size
;
private
$img_jd
;
function
img(
$img
=
''
,
$txt
=
''
,
$ttf
=
''
,
$size
=12,
$jiaodu
=0){
if
(isset(
$img
)&&
file_exists
(
$img
)){
//检测图片是否存在
$this
->image =
$img
;
$this
->img_text=
$txt
;
$this
->img_text_size=
$size
;
$this
->img_jd=
$jiaodu
;
if
(
file_exists
(
$ttf
)){
$this
->img_ttf=
$ttf
;
}
else
{
exit
(
'字体文件:'
.
$ttf
.
'不存在!'
);
}
$this
->imgyesno();
}
else
{
exit
(
'图片文件:'
.
$img
.
'不存在'
);
}
}
private
function
imgyesno(){
$this
->img_info =
getimagesize
(
$this
->image);
$this
->img_width =
$this
->img_info[0];
//图片宽
$this
->img_height=
$this
->img_info[1];
//图片高
//检测图片类型
switch
(
$this
->img_info[2]){
case
1:
$this
->img_im = imagecreatefromgif(
$this
->image);
break
;
case
2:
$this
->img_im = imagecreatefromjpeg(
$this
->image);
break
;
case
3:
$this
->img_im = imagecreatefrompng(
$this
->image);
break
;
default
:
exit
(
'图片格式不支持水印'
);
}
$this
->img_text();
}
private
function
img_text(){
imagealphablending(
$this
->img_im,true);
//设定颜色
$color
=imagecolorallocate(
$this
->img_im,rand(0,255),rand(0,255),rand(0,255));
$txt_height
=
$this
->img_text_size;
$txt_jiaodu
=
$this
->img_jd;
$ttf_im
=imagettfbbox(
$txt_height
,
$txt_jiaodu
,
$this
->img_ttf,
$this
->img_text);
$w
=
$ttf_im
[2] -
$ttf_im
[6];
$h
=
$ttf_im
[3] -
$ttf_im
[7];
//$w = $ttf_im[7];
//$h = $ttf_im[8];
unset(
$ttf_im
);
$txt_y
=
$this
->img_height-
$h
;
$txt_x
=
$this
->img_width-
$w
;
//$txt_y =0;
//$txt_x =0;
$this
->img_new=@imagettftext(
$this
->img_im,
$txt_height
,
$txt_jiaodu
,
$txt_x
,
$txt_y
,
$color
,
$this
->img_ttf,
$this
->img_text);
@unlink(
$this
->image);
//删除图片
switch
(
$this
->img_info[2]) {
//取得背景图片的格式
case
1:imagegif(
$this
->img_im,
$this
->image);
break
;
case
2:imagejpeg(
$this
->img_im,
$this
->image);
break
;
case
3:imagepng(
$this
->img_im,
$this
->image);
break
;
default
:
exit
(
'水印图片失败'
);
}
}
//显示图片
function
img_show(){
echo
'<img src="'
.
$this
->image.
'" border="0" alt="'
.
$this
->img_text.
'" />'
;}
//释放内存
private
function
img_nothing(){
unset(
$this
->img_info);
imagedestroy(
$this
->img_im);
}
}
?>
|