当前位置:首页 > PHP教程 > php图像处理 > 列表

PHP图片加水印实现方法

发布:smiling 来源: PHP粉丝网  添加日期:2019-07-28 15:00:08 浏览: 评论:0 

本文实例讲述了PHP图片加水印实现方法。分享给大家供大家参考,具体如下:

  1. <?php 
  2.  
  3. echo img_water_mark("2008112023204423477802.gif""copyImg.png"$savepath=null, $savename="123.gif"$positon=2, $alpha=60); 
  4.  
  5. /** 
  6.  
  7.  * 图片加水印(适用于png/jpg/gif格式) 
  8.  
  9.  *  
  10.  
  11.  * @author flynetcn 
  12.  
  13.  * 
  14.  
  15.  * @param $srcImg 原图片 
  16.  
  17.  * @param $waterImg 水印图片 
  18.  
  19.  * @param $savepath 保存路径 
  20.  
  21.  * @param $savename 保存名字 
  22.  
  23.  * @param $positon 水印位置  
  24.  
  25.  * 1:顶部居左, 2:顶部居右, 3:居中, 4:底部局左, 5:底部居右  
  26.  
  27.  * @param $alpha 透明度 -- 0:完全透明, 100:完全不透明 
  28.  
  29.  *  
  30.  
  31.  * @return 成功 -- 加水印后的新图片地址 
  32.  
  33.  *     失败 -- -1:原文件不存在, -2:水印图片不存在, -3:原文件图像对象建立失败-4:水印文件图像对象建立失败, -5:加水印后的新图片保存失败 
  34.  
  35.  */ 
  36.  
  37. function img_water_mark($srcImg$waterImg$savepath=null, $savename=null, $positon=5, $alpha=30) 
  38.  
  39.  
  40.   $temp = pathinfo($srcImg); 
  41.  
  42.   $name = $temp['basename']; 
  43.  
  44.   $path = $temp['dirname']; 
  45.  
  46.   $exte = $temp['extension']; 
  47.  
  48.   $savename = $savename ? $savename : $name
  49.  
  50.   $savepath = $savepath ? $savepath : $path
  51.  
  52.   $savefile = $savepath .'/'$savename
  53.  
  54.   $srcinfo = @getimagesize($srcImg); 
  55.  
  56.   if (!$srcinfo) { 
  57.  
  58.     return -1; //原文件不存在 
  59.  
  60.   } 
  61.  
  62.   $waterinfo = @getimagesize($waterImg); 
  63.  
  64.   if (!$waterinfo) { 
  65.  
  66.     return -2; //水印图片不存在 
  67.  
  68.   } 
  69.  
  70.   $srcImgObj = image_create_from_ext($srcImg); 
  71.  
  72.   if (!$srcImgObj) { 
  73.  
  74.     return -3; //原文件图像对象建立失败 
  75.  
  76.   } 
  77.  
  78.   $waterImgObj = image_create_from_ext($waterImg); 
  79.  
  80.   if (!$waterImgObj) { 
  81.  
  82.     return -4; //水印文件图像对象建立失败 
  83.  
  84.   } 
  85.  
  86.   switch ($positon) { 
  87.  
  88.   //1顶部居左 
  89.  
  90.   case 1: $x=$y=0; break
  91.  
  92.   //2顶部居右 
  93.  
  94.   case 2: $x = $srcinfo[0]-$waterinfo[0]; $y = 0; break
  95.  
  96.   //3居中 
  97.  
  98.   case 3: $x = ($srcinfo[0]-$waterinfo[0])/2; $y = ($srcinfo[1]-$waterinfo[1])/2; break
  99.  
  100.   //4底部居左 
  101.  
  102.   case 4: $x = 0; $y = $srcinfo[1]-$waterinfo[1]; break
  103.  
  104.   //5底部居右 
  105.  
  106.   case 5: $x = $srcinfo[0]-$waterinfo[0]; $y = $srcinfo[1]-$waterinfo[1]; break
  107.  
  108.   default$x=$y=0; 
  109.  
  110.   } 
  111.  
  112.   imagecopymerge($srcImgObj$waterImgObj$x$y, 0, 0, $waterinfo[0], $waterinfo[1], $alpha); 
  113.  
  114.   switch ($srcinfo[2]) { 
  115.  
  116.   case 1: imagegif($srcImgObj$savefile); break
  117.  
  118.   case 2: imagejpeg($srcImgObj$savefile); break
  119.  
  120.   case 3: imagepng($srcImgObj$savefile); break
  121.  
  122.   defaultreturn -5; //保存失败 
  123.  
  124.   } 
  125.  
  126.   imagedestroy($srcImgObj); 
  127.  
  128.   imagedestroy($waterImgObj); 
  129.  
  130.   return $savefile
  131.  
  132. //phpfensi.com 
  133. function image_create_from_ext($imgfile
  134.  
  135.  
  136.   $info = getimagesize($imgfile); 
  137.  
  138.   $im = null; 
  139.  
  140.   switch ($info[2]) { 
  141.  
  142.   case 1: $im=imagecreatefromgif($imgfile); break
  143.  
  144.   case 2: $im=imagecreatefromjpeg($imgfile); break
  145.  
  146.   case 3: $im=imagecreatefrompng($imgfile); break
  147.  
  148.   } 
  149.  
  150.   return $im
  151.  
  152.  
  153. ?> 

Tags: PHP图片加水印

分享到: