本篇文章给大家带来了关于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
{
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);
}
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 : //其他格式
}
}
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
水平好的,可以试着用 http_image_filter_module
模块来加水印, 我这也是无奈之举
(推荐教程:nginx教程、PHP视频教程)
以上就是nginx怎么通过PHP代理给图片加水印(详细代码)的详细内容,更多请关注编程网其它相关文章!