axn / laravel-glide
Laravel的league/glide包装器
2.2.1
2024-04-17 13:52 UTC
Requires
- php: ^8.0
- laravel/framework: ^9.0 || ^10.0 || ^11.0
- league/glide-symfony: ^2.0
Requires (Dev)
- driftingly/rector-laravel: ^1.1
- laravel/pint: ^1.15.1
- rector/rector: ^1.0.4
README
此包提供了一个服务提供者,允许您非常容易地将Glide集成到Laravel项目中。此外,可以配置多个服务器。
Glide是一个用PHP编写的简单按需图像处理库。它是非凡包联盟的一部分。
使用此包,您将能够即时生成图像处理并生成指向这些图像的URL。这些URL将进行签名,因此只有您才能指定应该生成哪些处理。每个处理都将被缓存。
升级
有关升级说明,请参阅UPGRADE.md
文件。
安装
通过composer安装
composer require axn/laravel-glide
环境
通过添加以下行编辑您的环境文件
GLIDE_IMAGE_DRIVER=gd
GLIDE_SIGN_KEY=SetComplicatedSignKey
显然,您必须根据您的环境调整值。
驱动可以是"gd"或"imagick"。
建议使用128个字符(或更大)的签名密钥。为了帮助您完成此操作,您可以运行以下命令
php artisan glide:key-generate
文件系统磁盘
对于文件存储,可以使用所需的服务器数量。为了保持有序的存储架构,我们建议您根据用途创建多个磁盘。
然后,您将在/config/filesystems.php
文件中创建一个磁盘以存储我们的图像,并创建另一个用于用户头像
'disks' => [ //... 'images' => [ 'driver' => 'local', 'root' => storage_path('app/images'), ], 'avatars' => [ 'driver' => 'local', 'root' => storage_path('app/images'), ], //... ],
配置
然后使用Artisan发布配置文件
php artisan vendor:publish --tag="glide-config"
这些已发布的文件更多的是作为一个例子。请花时间阅读注释以了解您可以配置的内容。
例如,在这些文件中,我们配置了两个服务器,一个用于图像,另一个用于用户头像。
文件系统的"source"、"cache"和"watermarks"名称必须与应用程序文件系统配置中的磁盘名称相同。路径前缀将取决于配置的磁盘。
乍一看可能不太明显,但它为您提供了组织文件存储的很大自由度。 当您理解它是如何工作的以及您如何从中受益时,您会对它提供的灵活性感到高兴。
查看这些文件后,请根据需要删除、修改和创建您自己的文件。
用法
为每个配置的服务器创建一个路由
// App/Http/routes.php use App\Http\Controllers\GlideController; use Illuminate\Support\Facades\Route; Route::get(config('glide.servers.images.base_url').'/{path}', [GlideController::class, 'images']) ->name('images') ->where('path', '(.*)'); Route::get(config('glide.servers.avatars.base_url').'/{path}', [GlideController::class, 'avatars']) ->name('avatars') ->where('path', '(.*)');
创建相应的控制器/动作
<?php namespace App\Http\Controllers; use Glide; use Illuminate\Http\Request; class GlideController extends Controller { public function images($path, Request $request) { return Glide::server('images')->imageResponse($path, $request->all()); } public function avatars($path, Request $request) { return Glide::server('avatars')->imageResponse($path, $request->all()); } }
将图像添加到您的视图中
<img src="{{ Glide::server('images')->url('example1.jpg', ['p' => 'medium]) }}"> <img src="{{ Glide::server('avatars')->url('example2.jpg', ['w' => 50, 'fit' => 'crop']) }}">