1 <?php
2 //图像添加水印函数
3 /**
4 *为一张图片添加上一个logo水印(以保存新图片的方式实现)
5 *@param string $picname 被缩放的处理图片源
6 *@param int $logo 水印图片
7 *@param string $pre 缩放后图片的前缀名
8 *@return $string 返回后的图片名称() 如a.jpg->n.jpg
9 *
10 **/
11 function imageUpdateLogo($picname,$logo,$pre="n_"){
12 $picnameinfo=getimageSize($picname);//获取图片源的基本信息
13 $logoinfo=getimageSize($logo);//获取logo图片源的基本信息
14
15 //根据图片类型创建出对应的图片源
16 switch($picnameinfo[2]){
17 case 1://gif
18 $im=imagecreatefromgif($picname);
19 break;
20 case 2://jpg
21 $im=imagecreatefromjpeg($picname);
22 break;
23 case 3://png
24 $im=imagecreatefrompng($picname);
25 break;
26 default:
27 die("图像类型错误");
28 } //根据logo图片类型创建对应的图片源
29 switch($logoinfo[2]){
30 case 1://gif
31 $logoim=imagecreatefromgif($logo);
32 break;
33 case 2://jpg
34 $logoim=imagecreatefromjpeg($logo);
35 break;
36 case 3://png
37 $logoim=imagecreatefrompng($logo);
38 break;
39 default:
40 die("图像类型错误");
41 }
42 //执行图片水印处理
43 imagecopyresampled($im,$logoim,$picnaeinfo[0]=$logoinfo[0],$picnaeinfo[1]=$logoinfo[1],0,0,$logoinfo[0],$logoinfo[1],$logoinfo[0],$logoinfo[1]);
44 //输出图像(根据源图像的类型,输出为对应的类型)
45 $picinfo=pathinfo($picname);//解析源图像的名字和路径信息
46 $newpicname=$picinfo["dirname"]."/".$pre.$picinfo["basename"];
47 switch($picnameinfo[2]){
48 case 1:
49 imagegif($im,$newpicname);
50 break;
51 case 2:
52 imagejpeg($im,$newpicname);
53 break;
54 case 3:
55 imagepng($im,$newpicname);
56 break;
57 }
58 //释放图片资源
59 imagedestroy($im);
60 imagedestroy($logoim);
61 //返回结果
62 return $newpicname;
63 }
64 // 测试成功
65 echo imageUpdateLogo("images/8.14.jpg","images/bg_00.jpg"); // 返回的结果为 images/n_8.14.jpg
66 ?>