作者信息

长期闲置

长风破浪会有时,直挂云帆济沧海。

最近文章
内存条有什么用931
es模块能在node中执行吗597
nodelist是什么意思621
视频教程分类
推荐视频教程
  • php程序员小白到大牛三个月集训php程序员小白到大牛三个月集训
  • Laravel 9 学习正当时—保姆级教程,想学不会都难!Laravel 9 学习正当时—保姆级教程,想学不会都难!
  • 千万级数据并发解决方案(理论+实战)千万级数据并发解决方案(理论+实战)
  • Laravel基础与实战(模块化)Laravel基础与实战(模块化)
  • 首页 >后端开发 >PHP问题 > 正文

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

    转载2022-06-09 09:54:03979 关注公众号:每天精选资源文章推送
    本篇文章给大家带来了关于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中文网其它相关文章!

    20期PHP线上班

    声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除

  • 相关标签:php
  • 推荐:PHP从基础到实战教程视频

    相关文章

    相关视频


    专题推荐