今天花了一点时间研究了php中imagecopymerge函数,这个函数是为图片添加水印的一个函数,我为此写了一个方法为需要的图片添加水 印,希望对你有所帮助,也希望你提出宝贵的意见!
	<?php
	/*
	 * Created on 2011-5-12
	 * author 孤独求学人
	 */
	 function waterMark($srcimg,$waterimg,$savename,$savepath,$position=1,$alpha=20){
	     //判断原图片是否存在
	     if(!file_exists($srcimg)){
	         return "原始图片不存在";
	     }
	     //判断水印图片是否存在
	     if(!file_exists($waterimg)){
	         return "水印图片不存在";
	     }
	     //图像合并程度是0和100之间的数值,既水印的透明度
	     if($alpha > 100 || $alpha < 0){
	         return "$alpha 必须大于0小于100";
	     }
	    //获取原始图片的信息
	     $temp = pathinfo($srcimg);
	     $srcimg_basename = $temp['basename'];
	     $srcimg_path = $temp['dirname'];
	
	     $savename = isset($savename) ? $savename : $srcimg_basename;//存储图片的名字
	     $savepath = isset($savepath) ? $savepath : $srcimg_path;//图片存储路径
	
	     $savefile = $savepath."/".$savename;//保存文件
	     $srcinfo = @getimagesize($srcimg);//获取原始图片的信息
	     $waterinfo = @getimagesize($waterimg);//获取水印图片的信息
	     //判断水印位置
	     switch($position){
	         case "1"://顶部居左
	             $x=$y=0;
	            break;
	         case "2"://顶部居右
	             $x = $srcinfo[0] - $waterinfo[0];$y=0;
	            break;
	         case "3"://顶部居中
	             $x = ($srcinfo[0] - $waterinfo[0])/2;$y=0;
	            break;
	         case "4"://图片居中
	             $x = ($srcinfo[0] - $waterinfo[0])/2;$y = ($srcinfo[1]-$waterinfo[1])/2;
	            break;
	         case "5"://底部居左
	             $x = 0;$y = $srcinfo[1]-$waterinfo[1];
	            break;
	         case "6"://底部居中
	             $x = ($srcinfo[0] - $waterinfo[0])/2;$y = $srcinfo[1]-$waterinfo[1];
	            break;
	         case "7"://底部居右
	             $x = $srcinfo[0] - $waterinfo[0];$y = $srcinfo[1]-$waterinfo[1];
	            break;
	         default:
	             $x=$y=0;
	     }
	
	     $srcImageObj = image_create_image_ext($srcimg);
	     if(!$srcImageObj){
	         return "原始新建图像失败";
	     }
	
	     $waterImageObj = image_create_image_ext($waterimg);
	     if(!$waterImageObj){
	         return "水印图片新建失败";
	     }
	    /*
	     * 拷贝并合并图像的一部分int imagecopymerge
	     * 其值范围从 0 到 100。当 pct = 0 时,实际上什么也没做,当为 100 时本函数和 imagecopy() 完全一样。
	     * 参数     说明
	     * dst_im     目标图像
	     * src_im     被拷贝的源图像
	     * dst_x     目标图像开始 x 坐标
	     * dst_y     目标图像开始 y 坐标,x,y同为 0 则从左上角开始
	     * src_x     拷贝图像开始 x 坐标
	     * src_y     拷贝图像开始 y 坐标,x,y同为 0 则从左上角开始拷贝
	     * src_w     (从 src_x 开始)拷贝的宽度
	     * src_h     (从 src_y 开始)拷贝的高度
	     * pct     图像合并程度,取值 0-100 ,当 pct=0 时,实际上什么也没做,反之完全合并。
	     * 当为 pct = 100 时对于调色板图像本函数和 imagecopy() 完全一样
	     */
	     imagecopymerge($srcImageObj,$waterImageObj,$x,$y,0,0,$waterinfo[0],$waterinfo[1],$alpha);
	     //判断原始图片的类型
	      switch($srcinfo[2]){
	         case '1'://以 GIF 格式将图像输出到文件
	            imagegif($srcImageObj,$savefile);
	            break;
	         case '2'://以 JPG 格式将图像输出到文件
	            imagejpeg($srcImageObj,$savefile);
	            break;
	         case '3'://以 PNG 格式将图像输出到文件
	            imagepng($srcImageObj,$savefile);
	            break;
	         default:
	            return false;
	     }
	     //销毁图像
	     imagedestroy($srcImageObj);
	     imagedestroy($waterImageObj);
	     return $savefile;
	 }
	/*
	 * resource imagecreatefromgif ( string filename)
	 * imagecreatefromgif() 返回一图像标识符,代表了从给定的文件名取得的图像。
	 */
	 function image_create_image_ext($filename){
	     $info = @getimagesize($filename);
	     $im ="";
	     switch($info[2]){
	         case "1":
	             return $im = imagecreatefromgif($filename);
	             break;
	         case "2":
	             return $im = imagecreatefromjpeg($filename);
	             break;
	         case "3":
	             return $im = imagecreatefrompng($filename);
	             break;
	     }
	 }
	?>