Nginx怎么通过PHP代理给图片加水印(详细代码)

 3401

本篇文章给大家带来了关于nginx怎么通过PHP代理给图片添加水印的相关知识,以及应该怎么调用的相关问题,通过代码示例来搞定,下面一起来看一下,希望对大家有帮助。


Nginx怎么通过PHP代理给图片加水印(详细代码)


nginx 配置代理

  1. location ~ /image/.*\.(gif|jpg|jpeg|png)$ {
  2.     proxy_pass http://127.0.0.1:8888/test/watermark?url=$request_uri;
  3. }

/img/ 匹配要代理的目录前缀,$request_uri 参数为访问的图片路径。


php 水印类

  1. /** 水印类
  2.  * Class Watermark
  3.  * @package app\test
  4.  */
  5. class Watermark
  6. {
  7.     /** 合成图片水印
  8.      * @param string $dstImage 原图片
  9.      * @param string $waterImg 水印图
  10.      */
  11.     public static function imageMarking($dstImage, $waterImg){
  12.         //获取图片信息
  13.         $dstInfo = getimagesize($dstImage);
  14.         $waterInfo = getimagesize($waterImg);
  15.         //创建图像
  16.         $dstImgObj = self::imageCreateFrom($dstImage, $dstInfo[2]);
  17.         $waterImgObj = self::imageCreateFrom($waterImg, $waterInfo[2]);
  18.         //合成水印
  19.         imagecopyresized($dstImgObj,$waterImgObj,0, 0,0,0,$dstInfo[0], $dstInfo[1],$waterInfo[0],$waterInfo[1]);
  20.         //输出图片
  21.         self::imageOut($dstImgObj,$waterInfo[2]);
  22.         //销毁资源对象
  23.         imagedestroy($dstImgObj);
  24.         imagedestroy($waterImgObj);
  25.     }
  26.     /** 生成图片对象
  27.      * @param string $imgFile 图片路径
  28.      * @param string $type 图片类型
  29.      * @return false|\GdImage|resource
  30.      */
  31.     private static function imageCreateFrom($imgFile, $type) {
  32.         switch ($type) {
  33.             case IMAGETYPE_GIF:
  34.                 return imagecreatefromgif($imgFile);
  35.             case IMAGETYPE_JPEG:
  36.                 return imagecreatefromjpeg($imgFile);
  37.             case IMAGETYPE_PNG:
  38.                 return imagecreatefrompng($imgFile);
  39.             default :   //其他格式
  40.         }
  41.     }
  42.     /** 输出图片
  43.      * @param string $imageObj
  44.      * @param string $type
  45.      */
  46.     private static function imageOut($imageObj,$type){
  47.         switch ($type) {
  48.             case 1:
  49.                 header("Content-Type: image/gif");
  50.                 imagegif($imageObj);
  51.                 break;
  52.             case 2:
  53.                 header("Content-Type: image/jpeg");
  54.                 imagejpeg($imageObj);
  55.                 break;
  56.             case 3:
  57.                 header("Content-Type: image/png");
  58.                 imagepng($imageObj);
  59.                 break;
  60.             default: //其他格式
  61.         }
  62.     }
  63. }


调用示例

  1. public function watermark(){
  2.     //图片路径前缀
  3.     $image = '/data/img/' . input('url');
  4.     self::imageMarking($image,'watermark.png');
  5.     exit;
  6. }

nginx 水平好的,可以试着用 http_image_filter_module 模块来加水印, 我这也是无奈之举


TAG标签:
本文网址:https://www.zztuku.com/detail-12275.html
站长图库 - Nginx怎么通过PHP代理给图片加水印(详细代码)
申明:本文转载于《learnku》,如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐

    做seo排名时你的侧重点是什么