Heim >Backend-Entwicklung >PHP-Problem >Wie fügt Nginx über einen PHP-Proxy Wasserzeichen zu Bildern hinzu (detaillierter Code)?

Wie fügt Nginx über einen PHP-Proxy Wasserzeichen zu Bildern hinzu (detaillierter Code)?

WBOY
WBOYnach vorne
2022-06-09 09:54:032296Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über das Hinzufügen von Wasserzeichen zu Bildern über PHPProxy sowie verwandte Probleme beim Aufrufen. Lassen Sie uns gemeinsam einen Blick darauf werfen. Ich hoffe, es wird für alle hilfreich sein.

Wie fügt Nginx über einen PHP-Proxy Wasserzeichen zu Bildern hinzu (detaillierter Code)? (Empfohlene Tutorials:

nginx-Tutorial

, PHP-Video-Tutorial) nginx-Konfigurations-Proxy

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

/img/ Passen Sie das Verzeichnispräfix an, das als Proxy verwendet werden soll, $ request_uri Der Parameter ist der Bildpfad, auf den zugegriffen werden soll.

php-Wasserzeichenklasse/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

Aufrufbeispiel

rrreeenginx Wenn Sie gut darin sind, können Sie versuchen, das Modul http_image_filter_module zu verwenden, um Wasserzeichen hinzuzufügen ein hilfloser Schachzug für mich(Empfohlene Tutorials: Nginx-Tutorial

, 🎜PHP-Video-Tutorial🎜)🎜

Das obige ist der detaillierte Inhalt vonWie fügt Nginx über einen PHP-Proxy Wasserzeichen zu Bildern hinzu (detaillierter Code)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen