Maison > développement back-end > Problème PHP > Comment nginx ajoute-t-il un filigrane aux images via un proxy PHP (code détaillé)

Comment nginx ajoute-t-il un filigrane aux images via un proxy PHP (code détaillé)

WBOY
Libérer: 2023-03-16 10:58:02
avant
2264 Les gens l'ont consulté

Cet article vous apporte des connaissances pertinentes sur nginxcomment ajouter des filigranes aux images via PHPproxy, ainsi que des problèmes connexes sur la façon de l'appeler. Cela peut être résolu grâce à des exemples de code. J'espère que cela sera utile à tout le monde.

Comment nginx ajoute-t-il un filigrane aux images via un proxy PHP (code détaillé)

(Tutoriels recommandés : tutoriel nginx, tutoriel vidéo PHP)

proxy de configuration nginx

location ~ /image/.*\.(gif|jpg|jpeg|png)$ {
    proxy_pass http://127.0.0.1:8888/test/watermark?url=$request_uri;
}
Copier après la connexion

/img/ Faites correspondre le préfixe du répertoire à proxy, $ request_uri Le paramètre est le chemin de l'image à laquelle accéder. /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: //其他格式
        }
    }
}
Copier après la connexion

调用示例

public function watermark(){
    //图片路径前缀
    $image = '/data/img/' . input('url');
    self::imageMarking($image,'watermark.png');
    exit;
}
Copier après la connexion

nginx 水平好的,可以试着用 http_image_filter_module

Classe de filigrane php

rrreeeExemple d'appelrrreeenginx Si vous êtes bon dans ce domaine, vous pouvez essayer d'utiliser le module http_image_filter_module pour ajouter des filigranes. un geste impuissant pour moi

(Tutoriels recommandés : 🎜Tutoriel nginx🎜, 🎜Tutoriel vidéo PHP🎜)🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal