Maison  >  Article  >  cadre php  >  Comment ajouter une fonction de recadrage dynamique de la taille de l'image dans le projet ThinkPHP

Comment ajouter une fonction de recadrage dynamique de la taille de l'image dans le projet ThinkPHP

藏色散人
藏色散人avant
2021-04-08 16:18:032347parcourir

La colonne tutorielle suivante de thinkphp vous présentera la fonction de recadrage dynamique de la taille de l'image dans le projet ThinkPHP. J'espère qu'elle sera utile aux amis qui en ont besoin !

Comment ajouter une fonction de recadrage dynamique de la taille de l'image dans le projet ThinkPHP

Ajouter la fonction de recadrage dynamique de la taille de l'image dans le projet ThinkPHP

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=af3dc18fc6bfb2afb521e587c348b904
Gestion des exceptions

Si 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;
    }
])
onExceptionFaites attention à cette fermeture. Une instance doit être renvoyée

thinkResponseRé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/

Recommandations associées :
Les 10 derniers tutoriels vidéo thinkphp

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer