<?php $bg_src="./bg.jpg"; $logo_src="./logo.png"; //获取图片的width宽、height高、mime后缀类型 $bg_size=getimagesize($bg_src); $logo_size=getimagesize($logo_src); $bg_width=$bg_size[0]; $bg_height=$bg_size[1]; $bg_mime=$bg_size['mime']; $logo_width=$logo_size[0]; $logo_height=$logo_size[1]; $logo_mime=$logo_size['mime']; $position=0;//水印相对背景图的位置;0表示位置在左上角,1表示位置在上边中间,2表示位置在右上角,3表示位置在左侧中间,4表示位置在中心,5表示位置在右侧中间,6表示位置在左下角,7表示位置在下边中间,8表示位置在右下角 $alpha=100;//水印的透明度0~100 //1.打开两张图片 function openimage($mime,$src){ switch ($mime){ case "image/jpeg": $img=imagecreatefromjpeg($src); break; case "image/png": $img=imagecreatefrompng($src); break; case "image/gif": $img=imagecreatefromgif($src); break; case "image/wbmp": $img=imagecreatefromwbmp($src); break; case "image/xbm": $img=imagecreatefromxbm($src); break; } return $img; } $bg=openimage($bg_mime,$bg_src); $logo=openimage($logo_mime,$logo_src); //2.合并两张图片 switch ($position){ case 0: $x=0; $y=0; break; case 1: $x=$bg_width/2-$logo_width/2; $y=0; break; case 2: $x=$bg_width-$logo_width; $y=0; break; case 3: $x=0; $y=$bg_height/2-$logo_height/2; break; case 4: $x=$bg_width/2-$logo_width/2; $y=$bg_height/2-$logo_height/2; break; case 5: $x=$bg_width-$logo_width; $y=$bg_height/2-$logo_height/2; break; case 6: $x=0; $y=$bg_height-$logo_height; break; case 7: $x=bg_width/2-$logo_width/2; $y=$bg_height-$logo_height; break; case 8: $x=$bg_width-$logo_width; $y=$bg_height-$logo_height; break; } imagecopymerge($bg,$logo,$x,$y,0,0,$logo_width,$logo_height,$alpha); //3.通知浏览器以图像形式展现 header("content-type:image/png"); //4.输出图像 imagepng($bg); //5.释放资源 imagedestroy($bg); imagedestroy($logo); ?>
若要将添加水印后的图片保存下来而非仅显示在浏览器中,则须在“4.输出图像”的步骤中使用imagepng()一类函数的另一形式:imagepng($bg,'生成图片的路径名称.后缀');
//3.通知浏览器以图像形式展现,若仅需保存无需在浏览器显示则注释这句 header("content-type:image/png"); //4.输出图像 imagepng($bg); //若仅需保存无需在浏览器显示则注释这句 //若要保存图像: //获取底板图片的文件扩展名 $ext=pathinfo($bg_src)['extension']; //生成一个随机且唯一性的文件名 $filename=md5(uniqid(microtime(true),true)).".".$ext; //设置要输出的文件路径 $filepath="./".$filename; switch ($ext) { case 'jpg': case 'jpeg': case 'jpe': imagejpeg($bg,$filepath); break; case 'png': imagepng($bg,$filepath); break; case 'gif': imagegif($bg,$filepath); break; case 'bmp': case 'wbmp': imagewbmp($bg,$filepath); break; case 'xbm': imagexbm($bg,$filepath); break; }