Bibliothèque de recadrage et de mise à l'échelle dynamique des images ThinkPHP
Attachez d'abord le projet Adresse : https://github.com/top-think/think-glide
Glide est une bibliothèque de manipulation d'images qui peut vous aider à générer dynamiquement du contenu d'image pour le navigateur en fonction de paramètres spécifiés, ainsi réalisation
Pour le recadrage dynamique des images, le filigrane, etc., cette bibliothèque fournit des packages et des extensions conviviaux à Glide, protégeant certaines abstractions sous-jacentes de la bibliothèque native afin que les utilisateurs de ThinkPHP puissent mieux ajouter des fonctions de recadrage dynamique pour les images dans les projets ThinkPHP
.
Installation
Exécutez la commande suivante pour installer :
$ composer require slince/think-glide
Utilisation
Démarrage rapide
Puisque le milieu a été ajouté depuis ThinkPHP 5.1.6 du logiciel, utilisez donc un middleware pour vous inscrire dans
-
ThinkPHP 5.1.6 et supérieur :
Ouvrez le fichier
application/middleware.php
(créez-le simplement si il n'existe pas), enregistrez le middleware :return [ //... \Slince\Glide\GlideMiddleware::factory([ 'source' => __DIR__ . '/../img', ]) ];
Cette méthode est relativement simple et recommandée
-
ThinkPHP 5.1.0 ou supérieur 5.1.6 ou inférieur :
Pas de middleware pris en charge, le processus d'activation est donc un peu plus compliqué. Nous utilisons la méthode suivante pour faire des compromis :
// 在 /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
est l'emplacement de votre dossier d'images local. , en supposant qu'il y ait des images dans ce répertoire user.jpg
, ouvrez le navigateur et visitez le lien suivant :
http://youdomain.com/images/user.jpg?w=100&h=100
pour obtenir l'image réduite.
Description des paramètres
参数名 | 类型 | 说明 | 是否必选 |
---|---|---|---|
source | string | 本地文件夹位置 | 是 |
cache | string | 缓存文件位置,默认在 runtime/glide 下面 |
否 |
cacheTime | string | 缓存时间,示例 +2 days , 缓存期间多次请求会自动响应 304 |
否 |
signKey | string | 安全签名 | 否 |
onException | callable | 异常处理handler | 否 |
baseUrl | string | 路由前缀,匹配到该前缀时中间件开始执行,默认是 /images
|
否 |
Signature de sécurité
Si la signature de sécurité n'est pas activée, l'utilisateur peut ajuster les paramètres dans la requête pour recadrer l'image par lui-même, si vous ne prévoyez pas de le faire. Si vous le faites, vous pouvez le vérifier via signKey
\Slince\Glide\GlideMiddleware::factory([ 'source' => __DIR__ . '/../img', 'signKey' => 'v-LK4WCdhcfcc%jt*VC2cj%nVpu+xQKvLUA%H86kRVk_4bgG8&CWM#k*' ])
Dans ce cas, les paramètres ajustés par l'utilisateur seront invalides ; 🎜>
echo app('glide.url_builder')->getUrl('user.jpg', ['w' => 100, 'h' => 100]); //你会得到如下链接:/images/user.jpg?w=100&h=100&s=af3dc18fc6bfb2afb521e587c348b904Gestion des exceptionsSi l'utilisateur accède à une image inexistante ou n'effectue pas de vérification de sécurité, le système lancera une exception. Vous pouvez remplacer le comportement par défaut via
:
\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; } ])
onException
Faites attention à cette fermeture. Une instance doit être renvoyée thinkResponse
Référence rapide
prend non seulement en charge le recadrage, mais glide prend également en charge d'autres opérations. Veuillez vous référer ici pour afficher les paramètres pris en charge :
http://glide.thephpleague.com/1.0/api/quick-reference/