>백엔드 개발 >PHP 문제 >nginx는 PHP 프록시를 통해 이미지에 워터마크를 추가하는 방법(자세한 코드)

nginx는 PHP 프록시를 통해 이미지에 워터마크를 추가하는 방법(자세한 코드)

WBOY
WBOY앞으로
2022-06-09 09:54:032307검색

이 글에서는 nginx프록시를 통해 이미지에 워터마크를 추가하는 방법과 이를 호출하는 방법에 대한 관련 문제를 코드 예제를 통해 함께 살펴보겠습니다. 모든 사람에게 도움이 되기를 바랍니다.

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 워터마크 클래스/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_modulerrreee

Call example

rrreeenginx 능숙하다면 http_image_filter_module 모듈을 사용해 워터마크를 추가해 볼 수도 있습니다. 나에게는 무력한 움직임( 추천 튜토리얼: nginx 튜토리얼

, 🎜PHP 비디오 튜토리얼🎜)🎜

위 내용은 nginx는 PHP 프록시를 통해 이미지에 워터마크를 추가하는 방법(자세한 코드)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제