>首页> IT >

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

时间:2022-06-09 09:35:07       来源:转载
本篇文章给大家带来了关于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 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水平好的,可以试着用 http_image_filter_module模块来加水印, 我这也是无奈之举

(推荐教程:nginx教程、PHP视频教程)

以上就是nginx怎么通过PHP代理给图片加水印(详细代码)的详细内容,更多请关注php中文网其它相关文章!

关键词: 视频教程 相关文章 添加水印