本文实例讲述了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
|
<?php echo img_water_mark( "2008112023204423477802.gif" , "copyImg.png" , $savepath =null, $savename = "123.gif" , $positon =2, $alpha =60); /** * 图片加水印(适用于png/jpg/gif格式) * * @author flynetcn * * @param $srcImg 原图片 * @param $waterImg 水印图片 * @param $savepath 保存路径 * @param $savename 保存名字 * @param $positon 水印位置 * 1:顶部居左, 2:顶部居右, 3:居中, 4:底部局左, 5:底部居右 * @param $alpha 透明度 -- 0:完全透明, 100:完全不透明 * * @return 成功 -- 加水印后的新图片地址 * 失败 -- -1:原文件不存在, -2:水印图片不存在, -3:原文件图像对象建立失败-4:水印文件图像对象建立失败, -5:加水印后的新图片保存失败 */ function img_water_mark( $srcImg , $waterImg , $savepath =null, $savename =null, $positon =5, $alpha =30) { $temp = pathinfo ( $srcImg ); $name = $temp [ 'basename' ]; $path = $temp [ 'dirname' ]; $exte = $temp [ 'extension' ]; $savename = $savename ? $savename : $name ; $savepath = $savepath ? $savepath : $path ; $savefile = $savepath . '/' . $savename ; $srcinfo = @ getimagesize ( $srcImg ); if (! $srcinfo ) { return -1; //原文件不存在 } $waterinfo = @ getimagesize ( $waterImg ); if (! $waterinfo ) { return -2; //水印图片不存在 } $srcImgObj = image_create_from_ext( $srcImg ); if (! $srcImgObj ) { return -3; //原文件图像对象建立失败 } $waterImgObj = image_create_from_ext( $waterImg ); if (! $waterImgObj ) { return -4; //水印文件图像对象建立失败 } switch ( $positon ) { //1顶部居左 case 1: $x = $y =0; break ; //2顶部居右 case 2: $x = $srcinfo [0]- $waterinfo [0]; $y = 0; break ; //3居中 case 3: $x = ( $srcinfo [0]- $waterinfo [0])/2; $y = ( $srcinfo [1]- $waterinfo [1])/2; break ; //4底部居左 case 4: $x = 0; $y = $srcinfo [1]- $waterinfo [1]; break ; //5底部居右 case 5: $x = $srcinfo [0]- $waterinfo [0]; $y = $srcinfo [1]- $waterinfo [1]; break ; default : $x = $y =0; } imagecopymerge( $srcImgObj , $waterImgObj , $x , $y , 0, 0, $waterinfo [0], $waterinfo [1], $alpha ); switch ( $srcinfo [2]) { case 1: imagegif( $srcImgObj , $savefile ); break ; case 2: imagejpeg( $srcImgObj , $savefile ); break ; case 3: imagepng( $srcImgObj , $savefile ); break ; default : return -5; //保存失败 } imagedestroy( $srcImgObj ); imagedestroy( $waterImgObj ); return $savefile ; } function image_create_from_ext( $imgfile ) { $info = getimagesize ( $imgfile ); $im = null; switch ( $info [2]) { case 1: $im =imagecreatefromgif( $imgfile ); break ; case 2: $im =imagecreatefromjpeg( $imgfile ); break ; case 3: $im =imagecreatefrompng( $imgfile ); break ; } return $im ; } ?> |
希望本文所述对大家PHP程序设计有所帮助。