ホームページ  >  記事  >  バックエンド開発  >  nginx は PHP プロキシを介して画像にウォーターマークを追加する方法 (詳細コード)

nginx は PHP プロキシを介して画像にウォーターマークを追加する方法 (詳細コード)

WBOY
WBOY転載
2022-06-09 09:54:032226ブラウズ

この記事では、nginxPHP エージェントを介して画像にウォーターマークを追加する方法に関する関連知識と、その呼び出し方法に関する関連する問題をコード例を通して説明します。ぜひご覧ください。皆さんのお役に立てば幸いです。

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。