nginx如何通过PHP代理给图片加水印

nginx如何通过PHP代理给图片加水印

nginx 配置代理

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

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

php 水印类

/** 水印类  * Class Watermark  * @package apptest  */ class Watermark {     /** 合成图片水印      * @param string $dstImage 原图片      * @param string $waterImg 水印图      */     public static function imageMarking($dstImage, $waterImg){         //获取图片信息         $dstInfo = getimagesize($dstImage);         $waterInfo = getimagesize($waterImg);         //创建图像         $dstImgObj = self::imageCreateFrom($dstImage, $dstInfo[2]);         $waterImgObj = self::imageCreateFrom($waterImg, $waterInfo[2]);         //合成水印         imagecopyresized($dstImgObj,$waterImgObj,0, 0,0,0,$dstInfo[0], $dstInfo[1],$waterInfo[0],$waterInfo[1]);         //输出图片         self::imageOut($dstImgObj,$waterInfo[2]);         //销毁资源对象         imagedestroy($dstImgObj);         imagedestroy($waterImgObj);     }     /** 生成图片对象      * @param string $imgFile 图片路径      * @param string $type 图片类型      * @return false|GdImage|resource      */     private static function imageCreateFrom($imgFile, $type) {         switch ($type) {             case IMAGETYPE_GIF:                 return imagecreatefromgif($imgFile);             case IMAGETYPE_JPEG:                 return imagecreatefromjpeg($imgFile);             case IMAGETYPE_PNG:                 return imagecreatefrompng($imgFile);             default :   //其他格式         }     }     /** 输出图片      * @param string $imageObj      * @param string $type      */     private static function imageOut($imageObj,$type){         switch ($type) {             case 1:                 header("Content-Type: image/gif");                 imagegif($imageObj);                 break;             case 2:                 header("Content-Type: image/jpeg");                 imagejpeg($imageObj);                 break;             case 3:                 header("Content-Type: image/png");                 imagepng($imageObj);                 break;             default: //其他格式         }     } }

调用示例

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

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享