ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHPプロジェクトに画像サイズの動的クロッピング機能を追加する方法

ThinkPHPプロジェクトに画像サイズの動的クロッピング機能を追加する方法

藏色散人
藏色散人転載
2021-04-08 16:18:032367ブラウズ

次のチュートリアル コラムでは、ThinkPHP プロジェクトにおける画像サイズの動的トリミング機能を紹介します。必要とする友人の役に立てば幸いです。

ThinkPHP プロジェクトに画像サイズの動的トリミング機能を追加します

ThinkPHPプロジェクトに画像サイズの動的クロッピング機能を追加する方法

ThinkPHP の画像の動的トリミングおよびスケーリング ライブラリ

最初にプロジェクトをアタッチします。アドレス: https://github.com/top-think/think-glide

Glide は、指定されたパラメーターに基づいてブラウザー用の画像コンテンツを動的に生成するのに役立つ画像操作ライブラリです。達成

動的な画像のトリミングや透かしなどについて、このライブラリは、使いやすいパッケージ化と Glide への拡張機能を提供し、ネイティブ ライブラリの基礎となる抽象化の一部を保護することで、ThinkPHP ユーザーが ThinkPHP プロジェクト内の画像の動的なトリミング機能をより適切に追加できるようにします。 . .

インストール


次のコマンドを実行してインストールします。

$ composer require slince/think-glide
使い方

クイックスタート

ThinkPHPから真ん中が追加されたのでソフトウェアの 5.1.6 機能のため、

ThinkPHP 5.1.6 以降のバージョンではミドルウェア登録を使用します。

application/middleware.php# を開きます。 ## ファイル (存在しない場合は作成するだけ)、ミドルウェアを登録します:
    return [
        //...
    
        \Slince\Glide\GlideMiddleware::factory([
            'source' => __DIR__ . '/../img',
        ])
    ];
  • この方法は比較的簡単でお勧めです;

    ThinkPHP 5.1.0 または5.1.6 以降:

    はミドルウェアをサポートしていないため、アクティベーション プロセスが少し複雑になります。次の方法で妥協します:

    // 在 /route/route.php 注册下面路由
    Route::get('images/:file', 'index/handleImageRequest');
    
    //在控制器 index 里创建action
    public function handleImageRequest()
    {
        $middleware = \Slince\Glide\GlideMiddleware::factory([
            'source' => App::getRootPath() . '/img',
        ]);
        
        return $middleware(app('request'), function(){
            return app('response');
        });
    }
  • source

    はローカルの画像ファイル フォルダーの場所です。このディレクトリに画像

    user.jpg

    があると仮定して、ブラウザを開いて次のリンクにアクセスします:
  • http://youdomain.com/images/user.jpg?w=100&h=100
    縮小した写真。

    パラメータの説明

    パラメータ名

    タイプ

    説明必須ですか?sourcestringローカル フォルダーの場所 は cachestringキャッシュ ファイルの場所。デフォルトは runtime/glide 以下です。Nostringキャッシュ時間、例 2日、キャッシュ期間中の複数のリクエストは自動的に304Nostring安全な署名NoonExceptioncallable 例外処理ハンドラーNobaseUrlstringルーティング プレフィックス (プレフィックスの場合)が一致します ミドルウェアの実行が開始されます。デフォルトは /imagesNosignKey, # を通じて検証できます。 ##
    \Slince\Glide\GlideMiddleware::factory([
        'source' => __DIR__ . '/../img',
        'signKey' => 'v-LK4WCdhcfcc%jt*VC2cj%nVpu+xQKvLUA%H86kRVk_4bgG8&CWM#k*'
    ])
    です
    cacheTime
    で応答します。 signKey
    セキュリティ署名 Does ですセキュリティ署名を有効にしない この場合、ユーザーはクエリ内のパラメータを調整して画像を自分でトリミングできます。これを行うつもりがない場合は、
    この場合、ユーザーが自分でパラメータを調整した場合は無効になります; 安全な URL を生成します:

    echo app('glide.url_builder')->getUrl('user.jpg', ['w' => 100, 'h' => 100]);
    
    //你会得到如下链接:/images/user.jpg?w=100&h=100&s=af3dc18fc6bfb2afb521e587c348b904

    例外処理


    ユーザーが存在しないアドレスにアクセスした場合画像を削除するか、セキュリティ検証を実行しない場合、システムは例外をスローします。デフォルトの動作を onException:

    \Slince\Glide\GlideMiddleware::factory([
        'source' => __DIR__ . '/../img',
        'signKey' => 'v-LK4WCdhcfcc%jt*VC2cj%nVpu+xQKvLUA%H86kRVk_4bgG8&CWM#k*',
        'onException' => function(\Exception $exception, $request, $server){
        
            if ($exception instanceof \League\Glide\Signatures\SignatureException) {
                $response = new Response('签名错误', 403);
            } else {
                $response = new Response(sprintf('你访问的资源 "%s" 不存在', $request->path()), 404);
            }
            
            return $response;
        }
    ])

    に置き換えることができます。クロージャは

    think\Response# を返す必要があることに注意してください。 ## インスタンス;

    クイック リファレンス

    トリミングをサポートするだけでなく、グライドは他の操作もサポートします。対応するパラメーターを渡すだけです。サポートされているパラメーターを確認するには、ここを参照してください:

    http ://glide.thephpleague.com/1.0/api/quick-reference/

    関連する推奨事項:

    最新の 10 件の thinkphp ビデオ チュートリアル

    以上がThinkPHPプロジェクトに画像サイズの動的クロッピング機能を追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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