public
function
watermark(
$source
,
$target
=
''
,
$w_pos
=
''
,
$w_img
=
''
,
$w_text
=
'99danji'
,
$w_font
= 8,
$w_color
=
'#ff0000'
) {
$this
->w_img =
'watermark.png'
;
$this
->w_pos = 9;
$this
->w_minwidth = 400;
$this
->w_minheight = 200;
$this
->w_quality = 80;
$this
->w_pct = 85;
$w_pos
=
$w_pos
?
$w_pos
:
$this
->w_pos;
$w_img
=
$w_img
?
$w_img
:
$this
->w_img;
if
(!
$target
)
$target
=
$source
;
$w_img
=
'../../../images/water/'
.
$w_img
;
$source_info
=
getimagesize
(
$source
);
$source_w
=
$source_info
[0];
$source_h
=
$source_info
[1];
switch
(
$source_info
[2]) {
case
1 :
$source_img
= imagecreatefromgif(
$source
);
break
;
case
2 :
$source_img
= imagecreatefromjpeg(
$source
);
break
;
case
3 :
$source_img
= imagecreatefrompng(
$source
);
break
;
default
:
return
false;
}
if
(!
empty
(
$w_img
) &&
file_exists
(
$w_img
)) {
$ifwaterimage
= 1;
$water_info
=
getimagesize
(
$w_img
);
$width
=
$water_info
[0];
$height
=
$water_info
[1];
switch
(
$water_info
[2]) {
case
1 :
$water_img
= imagecreatefromgif(
$w_img
);
break
;
case
2 :
$water_img
= imagecreatefromjpeg(
$w_img
);
break
;
case
3 :
$water_img
= imagecreatefrompng(
$w_img
);
break
;
default
:
return
;
}
}
else
{
$ifwaterimage
= 0;
$temp
= imagettfbbox(
ceil
(
$w_font
*2.5), 0, PC_PATH.
'libs/data/font/elephant.ttf'
,
$w_text
);
$width
=
$temp
[2] -
$temp
[6];
$height
=
$temp
[3] -
$temp
[7];
unset(
$temp
);
}
switch
(
$w_pos
) {
case
1:
$wx
= 5;
$wy
= 5;
break
;
case
2:
$wx
= (
$source_w
-
$width
) / 2;
$wy
= 0;
break
;
case
3:
$wx
=
$source_w
-
$width
;
$wy
= 0;
break
;
case
4:
$wx
= 0;
$wy
= (
$source_h
-
$height
) / 2;
break
;
case
5:
$wx
= (
$source_w
-
$width
) / 2;
$wy
= (
$source_h
-
$height
) / 2;
break
;
case
6:
$wx
=
$source_w
-
$width
;
$wy
= (
$source_h
-
$height
) / 2;
break
;
case
7:
$wx
= 0;
$wy
=
$source_h
-
$height
;
break
;
case
8:
$wx
= (
$source_w
-
$width
) / 2;
$wy
=
$source_h
-
$height
;
break
;
case
9:
$wx
=
$source_w
-
$width
;
$wy
=
$source_h
-
$height
;
break
;
case
10:
$wx
= rand(0,(
$source_w
-
$width
));
$wy
= rand(0,(
$source_h
-
$height
));
break
;
default
:
$wx
= rand(0,(
$source_w
-
$width
));
$wy
= rand(0,(
$source_h
-
$height
));
break
;
}
if
(
$ifwaterimage
) {
if
(
$water_info
[2] == 3) {
imagecopy(
$source_img
,
$water_img
,
$wx
,
$wy
, 0, 0,
$width
,
$height
);
}
else
{
imagecopymerge(
$source_img
,
$water_img
,
$wx
,
$wy
, 0, 0,
$width
,
$height
,
$this
->w_pct);
}
}
else
{
if
(!
empty
(
$w_color
) && (
strlen
(
$w_color
)==7)) {
$r
= hexdec(
substr
(
$w_color
,1,2));
$g
= hexdec(
substr
(
$w_color
,3,2));
$b
= hexdec(
substr
(
$w_color
,5));
}
else
{
return
;
}
imagestring(
$source_img
,
$w_font
,
$wx
,
$wy
,
$w_text
,imagecolorallocate(
$source_img
,
$r
,
$g
,
$b
));
}
switch
(
$source_info
[2]) {
case
1 :
imagegif(
$source_img
,
$target
);
break
;
case
2 :
imagejpeg(
$source_img
,
$target
,
$this
->w_quality);
break
;
case
3 :
imagepng(
$source_img
,
$target
);
break
;
default
:
return
;
}
if
(isset(
$water_info
)) {
unset(
$water_info
);
}
if
(isset(
$water_img
)) {
imagedestroy(
$water_img
);
}
unset(
$source_info
);
imagedestroy(
$source_img
);
return
true;
}
public
function
check(
$image
) {
return
extension_loaded
(
'gd'
) && preg_match(
"/\.(jpg|jpeg|gif|png)/i"
,
$image
,
$m
) &&
file_exists
(
$image
) && function_exists(
'imagecreatefrom'
.(
$m
[1] ==
'jpg'
?
'jpeg'
:
$m
[1]));
}