本篇内容主要讲解“nginx如何通过PHP代理给图片加水印”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nginx如何通过PHP代理给图片加水印”吧!
location ~ /image/.*\.(gif|jpg|jpeg|png)$ {
proxy_pass http://127.0.0.1:8888/test/watermark?url=$request_uri;
}
/img/
匹配要代理的目录前缀,$request_uri
参数为访问的图片路径。
/** 水印类
* Class Watermark
* @package app\test
*/
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;
}
到此,相信大家对“nginx如何通过PHP代理给图片加水印”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。