• PHP给图片加水印具体实现


    给图片加水印实现方法如下:

      1 class Mark
      2 {
      3     public function __construct()
      4     {
      5  
      6     }
      7  
      8 /**
      9  * 加水印
     10  * @param  file     $srcImg   要加水印的图片
     11  * @param  file     $waterImg 水印图片
     12  * @param  integer  $position 水印图片放置位置  1:左上,2:右上,3:居中,4:左下,5:右下
     13  * @param  integer  $alpha    水印图片透明度   0-100
     14  * @return resource           返回加水印后的图像资源
     15  */
     16     public function waterMark($srcImg, $waterImg, $position=5, $alpha)
     17     {
     18         /**
     19          * 获取原图及水印图的宽高值(px)
     20          * @var [type]
     21          */
     22         $srcImgInfo = @getimagesize($srcImg);
     23         if(!$srcImgInfo) return FALSE;
     24         $srcW = $srcImgInfo[0];
     25         $srcH = $srcImgInfo[1];
     26  
     27         $waterInfo = @getimagesize($waterImg);
     28         if (!$waterInfo)return FALSE;//水印图片不存在或路径错误
     29         $waterW = $waterInfo[0];//宽度
     30         $waterH = $waterInfo[1];//高度
     31  
     32  
     33         /**
     34          * 生成图像资源
     35          * @var [type]
     36          */
     37         $srcImgObj = $this->imageCreateFromExt($srcImg);
     38         if (!$srcImgObj) return FALSE;
     39  
     40         $waterImgObj = $this->imageCreateFromExt($waterImg);
     41         if (!$waterImgObj) return FALSE;
     42         //计算水印的位置
     43         switch ($position)
     44         {
     45         //1顶部居左
     46         case 1:
     47             $srcX = $srcY = 0;
     48             break;
     49         //2顶部居右
     50         case 2:
     51             $srcX = $srcW - $waterW;
     52             $srcY = 0;
     53             break;
     54         //3居中
     55         case 3:
     56             $srcX = ($srcW -$waterW)/2;
     57             $srcY = ($srcH -$waterH)/2;
     58             break;
     59         //4底部居左
     60         case 4:
     61             $srcX = 0;
     62             $srcY = $srcH -$waterH;
     63             break;
     64         //5底部居右
     65         case 5:
     66             $srcX = $srcW - $waterW;
     67             $srcY = $srcH - $waterH;
     68             break;
     69         default:
     70             $srcX = $srcY = 0;
     71         }
     72         //合并原图和水印图片
     73         imagecopymerge($srcImgObj, $waterImgObj, $srcX, $srcY, 0, 0, $waterW, $waterH, $alpha);
     74         imagedestroy($waterImgObj);//关闭水印图像资源
     75         //返回合并后的图像资源,外部得到图像资源后可直接输出到浏览器也可保存成图片文件
     76         return $srcImgObj;
     77         }
     78  
     79     /**
     80     * 根据提供的原图格式创建新图像资源
     81     * @param file $imgfile
     82     * @return Ambigous <NULL, resource>
     83     */
     84     private function imageCreateFromExt($imgfile)
     85     {
     86         //获取图片的格式;格式:1、gif,2、jpg,3、png
     87         $imageType = getimagesize($imgfile)[2];
     88         $im = null;
     89         switch ($imageType) {
     90         case 1:
     91             $im = imagecreatefromgif($imgfile);
     92             break;
     93         case 2:
     94             $im = imagecreatefromjpeg($imgfile);
     95             break;
     96         case 3:
     97             $im = imagecreatefrompng($imgfile);
     98             break;
     99         default:
    100             $im = imagecreatefrompng($imgfile);
    101         }
    102         return $im;
    103     }
    104 }
  • 相关阅读:
    angular-ui-bootstrap的弹出框定义成一个服务的实践(二)
    分享百度文件上传组件webUploader的使用demo
    display的flex属性使用详解
    数组去重(初识ES6)
    在ng中的select的使用方法的讲解
    安装xamp之后,appach、mysql等问题的总结
    python中string.casefold和string.lower区别
    python3数据类型
    MySQL bin-log 日志清理方式
    python终端颜色设置
  • 原文地址:https://www.cnblogs.com/wenxiong/p/3835250.html
Copyright © 2020-2023  润新知