Glide は、指定されたパラメーターに基づいてブラウザー用の画像コンテンツを動的に生成するのに役立つ画像操作ライブラリです。達成
動的な画像のトリミングや透かしなどについて、このライブラリは、使いやすいパッケージ化と Glide への拡張機能を提供し、ネイティブ ライブラリの基礎となる抽象化の一部を保護することで、ThinkPHP ユーザーが ThinkPHP プロジェクト内の画像の動的なトリミング機能をより適切に追加できるようにします。 . . インストール
次のコマンドを実行してインストールします。
$ composer require slince/think-glide
ログイン後にコピー
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
ログイン後にコピー
パラメータの説明
パラメータ名
タイプ
source | string | ||
---|---|---|---|
です | cachestring | キャッシュ ファイルの場所。デフォルトは | |
No | cacheTime | stringキャッシュ時間、例 | |
No | で応答します。 | signKey | string安全な署名 |
onException | callable | 例外処理ハンドラー | |
baseUrl | string | ルーティング プレフィックス (プレフィックスの場合)が一致します ミドルウェアの実行が開始されます。デフォルトは | |
No |
セキュリティ署名 |
Does ですセキュリティ署名を有効にしない この場合、ユーザーはクエリ内のパラメータを調整して画像を自分でトリミングできます。これを行うつもりがない場合は、 |
echo app('glide.url_builder')->getUrl('user.jpg', ['w' => 100, 'h' => 100]);
//你会得到如下链接:/images/user.jpg?w=100&h=100&s=af3dc18fc6bfb2afb521e587c348b904
ログイン後にコピー
例外処理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# を返す必要があることに注意してください。 ## インスタンス; クイック リファレンストリミングをサポートするだけでなく、グライドは他の操作もサポートします。対応するパラメーターを渡すだけです。サポートされているパラメーターを確認するには、ここを参照してください: